2

我正在编写一个简单的代码来从我的数据库中名为 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
4

5 回答 5

11

这是调试信息不​​足的典型案例:

mysqli_select_db($dbCon, $db);

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

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

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

于 2013-07-02T10:05:17.970 回答
2

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

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

尝试这个:

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

可能会给出更有意义的错误信息。

于 2013-07-02T10:00:52.397 回答
1

即使在使用 mysqli_select_db() 之后,PHP 仍显示“未选择数据库”

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

无论哪种方式,PHP 都会正确设置当前数据库。
不这样做的唯一原因是您犯了某种错字。

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

就这样。
没有魔法。
mysqli 中没有错误。
只有一种合理的解释。永远相信你的常识。

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

  1. 在你所有的进一步代码中,总是做error_reporting(E_ALL);第一行,永远不要关闭它,也不要减少它。这样,您将收到代码中发生错误的通知。
  2. 在代码中使用数据库凭据之前,请在控制台中对其进行测试。这样,您将确保您的凭据正确且有效。如果在设置适当的凭据时遇到问题 - 作为设置它们的问题。
  3. 如果没有错误并且凭据都正确 - 检查代码中的拼写错误。
于 2013-07-02T09:58:11.423 回答
0
if(!dbCon){
   echo "Conenction Fail"; 
}

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

于 2014-08-13T18:37:38.103 回答
-1

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

$dbU = 'root'

那应该对你有用。

于 2015-07-11T11:30:13.333 回答