PHP mysqli::real_connect() / mysqli_real_connect() 函数用于建立与 MySQL 数据库的连接引擎。此函数与 mysqli_connect() 不同:
- mysqli_real_connect() 需要一个必须由函数 mysqli_init() 创建的有效对象。
- mysqli_real_connect()可以与mysqli_options()函数一起使用来设置连接的各种选项。
- mysqli_real_connect()有一个flags参数。 li>
语法
//面向对象风格
public mysqli::real_connect(host, username, passwd,
dbname, port, socket, flags)
//面向过程风格
mysqli_real_connect(mysql, host, username, passwd,
dbname, port, socket, flags)
参数
mysql | 必需。 仅适用于面向过程风格:指定 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。 |
host | 可选。 指定主机名或 IP 地址。将 null 值或"localhost"传递给此参数,则假定为本地主机。 |
用户名 | 可选的。 指定 MySQL 用户名。 |
passwd | 可选。 指定 MySQL 密码。这允许用户名用于不同的权限(取决于是否提供密码)。 |
dbname | 可选。 如果提供,将指定执行查询时使用的默认数据库。 |
端口 | 可选的。 指定尝试连接 MySQL 服务器的端口号。 |
socket | 可选。 指定应使用的套接字或命名管道。 |
flags | 可选。 指定标志来设置不同的连接选项。可能的值为:
|
注意:出于安全原因,PHP 不支持 MULTI_STATEMENT 标志。要执行多个查询,请使用 mysqli_multi_query() 函数。
返回值
成功时返回 true,失败时返回 false。
示例:面向对象风格
下面的示例显示了 mysqli::real_connect() 方法的用法。
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
//指定连接超时
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
//建立与数据库的连接
if (!$mysqli->real_connect("localhost", "user", "password", "database")) {
die('Connect Error: '. mysqli_connect_error());
}
echo 'Success... ' . $mysqli->host_info . "\n";
//关闭连接
$mysqli->close();
?>
上述代码的输出将是:
Success... MySQL host info: localhost via TCP/IP
示例:扩展 mysqli 类时的面向对象风格
考虑下面的示例,其中在扩展 mysqli 类时使用此方法。
<?php
class acs_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::init();
if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 10)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!parent::real_connect($host, $user, $pass, $db)) {
die('Connect Error: ' . mysqli_connect_error());
}
}
}
//建立与数据库的连接
$db = new acs_mysqli("localhost", "user", "password", "database");
echo 'Success... ' . $db->host_info . "\n";
//关闭连接
$db->close();
?>
上述代码的输出将是:
Success... MySQL host info: localhost via TCP/IP
示例:面向过程风格
下面的示例显示mysqli_real_connect()函数的用法。
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!mysqli_options($mysqli, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
//指定连接超时
if (!mysqli_options($mysqli, MYSQLI_OPT_CONNECT_TIMEOUT, 10)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
//建立与数据库的连接
if (!mysqli_real_connect($mysqli, "localhost", "user", "password", "database")) {
die('Connect Error: '. mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($mysqli) . "\n";
//关闭连接
mysqli_close($mysqli);
?>
上述代码的输出将是:
Success... MySQL host info: localhost via TCP/IP