我正在编写一个简单的代码来从我的数据库中名为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
答案 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中没有错误。
只有一个合理的解释。始终相信你的常识。
您需要学习一些规则以避免将来出现此类问题:
error_reporting(E_ALL);
成为第一行,而永远不会将其关闭,也不会减少。这样,您将收到代码中发生错误的通知。答案 3 :(得分:0)
if(!dbCon){
echo "Conenction Fail";
}
您忘记在dbCon变量中添加$。
答案 4 :(得分:-1)
我遇到了同样的问题。我创建了一个新的数据库,但无法从PHP中选择。然而,可以选择测试数据库。我通过将$ user更改为&#39; root&#39;来解决它。对于你的情况:
$dbU = 'root'
这对你有用。