对于php来说是个新手。我一直在尝试查询数据库,并且不断抛出无法完成查询的异常。我检查确保我连接到数据库,一切都很好,直到我深入挖掘。似乎我的代码告诉我,无论我输入什么密码,用户名,或者即使我没有定义这些数据,我也会连接到数据库。我不明白。最初我在一个函数中有以下代码,但我没有自己的页面来调试:
<?php
echo'this is working so far <br>';
/*$db = 'fake';
$host = 'localhost';
$password = 'wrong';
$user = 'root';
*/
$result = new mysqli($host, $user, $password, $db);
if(!$result){
echo 'did not connect to database';
throw new Exception('Could not connect to database');
}
else{
echo'connected to database';
return $result;
}
它总是告诉我我已连接到数据库..
答案 0 :(得分:2)
因为您要将Object oriented style
与Procedural style
混合以检查数据库连接
程序风格
<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link);
?>
面向对象的风格
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
?>
答案 1 :(得分:1)
您应该检查存储上次连接呼叫错误代码的connect_errno
属性。
$mysqli = new mysqli($host, $user, $password, $db);
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
答案 2 :(得分:1)
注意:
仅限OO语法:如果连接失败,仍会返回对象。要检查连接是否失败,请使用mysqli_connect_error()函数或mysqli-&gt; connect_error属性,如前面的示例所示。
<强> Source 强>
这意味着无论如何,if($result)
检查总是正确的。所以不,你没有那个数据库连接,但你正在验证它错误导致你相信你这样做。
您的支票应
if($result->connect_error)
// no luck
else
// game on