【问题标题】:Mysql "No Database selected" error when using PHP使用PHP时Mysql“未选择数据库”错误
【发布时间】:2016-12-03 12:01:47
【问题描述】:

如果 Mysql 中的 table2 中不存在 ID,我正在尝试从 table1 中删除。

在 Phpmyadmin 中使用 sql 查询时

DELETE t1 FROM db.table1 t1 LEFT JOIN db.table2 t2 ON t1.id = t2.id WHERE t2.id IS NULL

它可以完美地从 table1 中删除 table2 中找不到的行!

但是,当在 PHP 中使用

相同的 sql 时,
mysqli_query($connection,"DELETE t1 FROM db.table1 t1 LEFT JOIN db.table2 t2 ON t1.id = t2.id WHERE t2.id IS NULL") or die(mysqli_error($connection));

它抛出错误 No database selected 。我已经验证并且我的连接使用主机、用户名和密码正确定义。

$connection = @mysqli_connect($host,$username,$password);

我不认为 $connection 有问题,因为在它之前/之后还有其他查询都可以正常工作!我做错了什么?

【问题讨论】:

  • 已添加 $connection 详细信息
  • 我在查询中使用 database.table,因此没有单独选择数据库。感谢您的帮助
  • 您没有选择任何数据库。请用数据库名称连接MySQL。请看下面我已经为您发布了答案。

标签: php mysql


【解决方案1】:

终于搞定了!我仍然不明白为什么 PHP 查询失败。无论如何,查询本身很简单,我从 SO 问题 Delete all rows which has no id existing in another table 复制而来。

我可以弄清楚的是,使用别名是有问题的,最后我在 DB 中使用了完整的表名,它工作得很好。我很确定可以使用别名,只是我不是他们的专家!

mysqli_query($connection,"DELETE db.table1 FROM db.table1 LEFT JOIN db.table2 ON table1.id = table2.id WHERE table2.id IS NULL");

【讨论】:

    【解决方案2】:

    确保您传递了您想要使用的数据库名称:

    $conn = mysqli_connect($servername, $username, $password, $dbname);
    

    【讨论】:

    • 我在查询中使用database.table,因此没有单独选择数据库。感谢您的帮助
    【解决方案3】:

    请指定您的数据库与连接。

    $conn = mysqli_connect($servername, $username, $password, $dbname);

    这里你没有在你的连接中传递数据库名称。

    或者

    在您的查询中指定数据库名称,例如:- db.table

    也使用这种方式。

    请试一试。这将适用于您的情况。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2010-10-25
      • 2012-01-20
      • 1970-01-01
      • 2017-01-05
      • 2019-12-27
      • 2017-11-03
      • 1970-01-01
      相关资源
      最近更新 更多