我正在编写一个简单的代码,从我的数据库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
这是调试信息不足的典型情况:
mysqli_select_db($dbCon, $db);
您不检查返回值;它可以返回CCD_ 1以指示它不能改变数据库(可能是由于权限)。我建议把这个放在适当的位置并运行它:
if (!mysqli_select_db($dbCon, $db)) {
die("Uh oh, couldn't select database $db");
}
如果发生这种情况,请仔细检查名称、权限等。
我不能评论,我还没有声誉,但是:
if(!$dbCon){
echo "Connection Failure!";
}
试试这个:
if (!$dbCon) {
die('Connection Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
可能会给出更有意义的错误信息。
PHP在使用mysqli_select_db()后仍表示"未选择数据库"
不,如果您使用的是有效凭据,则不会。
PHP将以任何一种方式设置当前数据库
不这么做的唯一原因是你犯了一个错误
您只需要确保实际使用正确的数据库名称调用了该函数
然后再仔细检查。当然,用户必须拥有访问该数据库的权限。
仅此而已
没有魔法
mysqli中没有bug
只有一个合理的解释。永远相信你的常识。
为了避免未来出现此类问题,您需要学习以下几条规则:
- 在所有进一步的代码中,始终将
error_reporting(E_ALL);
作为第一行,并且永远不要将其关闭或减少。通过这种方式,您将收到代码中发生错误的通知 - 在代码中使用数据库凭据之前,请在控制台中对其进行测试。通过这种方式,您将确保您的凭据正确且有效。如果在设置正确的凭据方面有问题,请回答有关设置凭据的问题
- 如果没有错误并且凭据都是正确的,请检查代码中的拼写错误
if(!dbCon){
echo "Conenction Fail";
}
您忘记在dbCon变量中添加$。
我也遇到了同样的问题。我创建了一个新的数据库,但无法从PHP中选择。然而,测试数据库是可以选择的。我通过将$user更改为"root"解决了这个问题。对于您的案例:
$dbU = 'root'
这应该对你有用。