PHP mysqli::set_opt() / mysqli_set_opt() 函数用于设置额外的连接选项并影响行为用于连接。
可以多次调用此函数来设置多个选项。该函数应在 mysqli_init() 之后、mysqli_real_connect() 之前调用。
该方法是 mysqli_options() 函数的别名。
语法
//面向对象风格
public mysqli::set_opt(option, value)
//面向过程风格
mysqli_set_opt(mysql, option, value)
参数
mysql | 必填。 仅适用于面向过程风格:指定 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。 |
options | 必填。 指定要设置的选项。它可以是以下值之一:
|
value | 必填。 指定选项的值。 |
返回值
成功时返回 true,失败时返回 false。
示例:面向对象风格
下面的示例显示了 mysqli::set_opt() 方法的用法。
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!$mysqli->set_opt(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
//指定连接超时
if (!$mysqli->set_opt(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::set_opt(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
if (!parent::set_opt(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_set_opt() 函数。
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!mysqli_set_opt($mysqli, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
//指定连接超时
if (!mysqli_set_opt($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