此代码产生错误:
$conn_obj = new MySQLi();
$conn_obj->connect($host, $username, $password);
此代码有效:
$conn_obj = new MySQLi($host, $username, $password);
我的问题是:这是MySQL中的某种错误,还是我忘了启用某些属性?
我知道问题不在于任何这些参数。
答案 0 :(得分:6)
当以面向对象的方式使用时,MySQLi没有方法connect()
。调用__construct()
时,通过new MySQLi($host, $user, $pass, $dbname)
建立连接,这是预期的行为
有关完整信息,请参阅MySQLi::__construct()上的文档。
有一个函数mysqli_connect()
,它在程序(非OO)代码中建立一个MySQLi连接对象,如:
$connection = mysqli_connect($host, $user, $pass, $dbname);
通过MySQLi::init()
设置MySQLi对象时,可以在设置选项后调用返回的对象上的real_connect()
方法。
改编自MySQLi文档:
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}