我正在寻找一种方法来testing一个PHP / mysqli连接的连接部分。 我正在从一个基于Vista的LAMP服务器迁移到Ubuntu上的相同,并有适合让mysqli工作。 我知道所有的正确的模块安装,并PhpMyAdmin完美无瑕的工作。 我已经迁移了一个网站,没有任何mysqli连接正在工作。 我得到的错误是“对非对象成员函数xxx()的调用”,当查询本身不好或者查询是从不良连接准备的时候,通常会popup这个错误。 我知道查询本身是好的,因为它可以在其他服务器上正常工作,具有完全相同的数据库结构和数据。 这使我的连接。 我试图写一个非常简单的testing连接,并把它放在一个循环,如..
if(***connection here ***) { echo "connected"; } else { echo "not connected"; }
它呼应“连接”,这是伟大的。 但只是为了检查我改变了连接的密码,以便我知道它将无法连接,它仍然回显“连接”。 所以,if / elsetesting显然不是要走的路。
mysqli_connect()总是返回一个MySQLi对象。 要检查连接错误,请使用:
$mysqli_connection = new MySQLi('localhost', 'user', 'pass', 'db'); if ($mysqli_connection->connect_error) { echo "Not connected, error: " . $mysqli_connection->connect_error; } else { echo "Connected."; }
然后你需要更多的错误处理各种数据库调用。 快速/肮脏的方法是简单的做
$whatever = mysqli_somefunction(...) or die("MySQL error: ". mysqli_error());
如果发生错误,所有的函数都会返回布尔值FALSE,或者返回一个合适的mysqli对象。 没有错误检查,你会这样做:
$result = $mysqli->query("blah blah will cause a syntax error"); $data = $result->fetchRow(); // $result is "FALSE", not a mysqli_object, hence the "call to member on non-object"