即使在使用mysqli_select_db()之后,PHP也说“没有选择数据库”

时间:2013-07-02 09:47:14

标签: php mysql mysqli

我正在编写一个简单的代码来从我的数据库中名为Plasma的表中获取2个元素。 似乎连接正常,但由于未知原因我无法选择任何数据库。

代码:

<?php
$db  = "Plasma"; 
$dbH = "localhost";
$dbU = "plasma";
$dbP = "plasma";
      $dbCon = mysqli_connect($dbH,$dbU,$dbP,$db);
        if(!dbCon){
            echo "Conenction Fail";
        }
        mysqli_select_db($dbCon,$db);
        $qry = "select Mid,Mname from ya_movies order by DOA limit 5;";
        $Response = mysqli_query($dbCon,$qry);
        echo mysqli_error($dbCon);                     ?>

输出

No database selected

5 个答案:

答案 0 :(得分:8)

这是调试信息不​​足的典型情况:

mysqli_select_db($dbCon, $db);

您不检查返回值;它可能会返回false以表示它无法更改数据库(可能是由于权限)。我建议把它放到位并运行它:

if (!mysqli_select_db($dbCon, $db)) {
    die("Uh oh, couldn't select database $db");
}

如果发生这种情况,请仔细检查名称,权限等。

答案 1 :(得分:2)

我无法发表评论,但我还没有声誉,但是:

if(!$dbCon){
    echo "Connection Failure!";
}

试试这个:

if (!$dbCon) {
    die('Connection Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}

可能会提供更有意义的错误消息。

答案 2 :(得分:1)

  

即使在使用mysqli_select_db()

之后,PHP也说“没有选择数据库”

如果您使用的是有效凭据,则不会

PHP将以任何方式设置当前数据库 不这样做的唯一原因是你犯了某种错字。

您只需要确保使用正确的数据库名称实际调用此函数
然后仔细检查一下。 当然,用户必须有权访问该数据库。

就是这样 没有魔力 mysqli中没有错误。
只有一个合理的解释。始终相信你的常识。

您需要学习一些规则以避免将来出现此类问题:

  1. 在所有进一步的代码中,始终使error_reporting(E_ALL);成为第一行,而永远不会将其关闭,也不会减少。这样,您将收到代码中发生错误的通知。
  2. 在代码中使用数据库凭据之前,请在控制台中对其进行测试。这样,您将确保您的凭据正确并且有效。如果设置正确的凭据有问题 - 作为设置它们的问题。
  3. 如果没有错误且凭据都正确 - 请检查代码中的拼写错误。

答案 3 :(得分:0)

if(!dbCon){
   echo "Conenction Fail"; 
}

您忘记在dbCon变量中添加$。

答案 4 :(得分:-1)

我遇到了同样的问题。我创建了一个新的数据库,但无法从PHP中选择。然而,可以选择测试数据库。我通过将$ user更改为&#39; root&#39;来解决它。对于你的情况:

$dbU = 'root'

这对你有用。