MySQLi连接方法中的一个Bug


A Bug in MySQLi connect method?

下面的代码会产生一个错误:

$conn_obj = new MySQLi();
$conn_obj->connect($host, $username, $password);

$conn_obj = new MySQLi($host, $username, $password);

我的问题是:这是MySQL中的某种bug,还是我忘记启用某些属性?

MySQLi在以面向对象的方式使用时没有方法connect()。调用new MySQLi($host, $user, $pass, $dbname)时通过__construct()建立连接,因此这是预期的行为

请参阅MySQLi::__construct()的文档以获取完整的信息。

有一个函数mysqli_connect(),它在过程(非面向对象)代码中建立一个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());
}