PHP mysqli::__construct() / mysqli::connect() / mysqli_connect() 函数用于打开与 MySQL 服务器的新连接。
语法
//面向对象风格
public mysqli::__construct(hostname, username, password,
database, port, socket)
public mysqli::connect(hostname, username, password,
database, port, socket)
//面向过程风格
mysqli_connect(hostname, username, password,
database, port, socket)
参数
hostname | 可选。 指定主机名或 IP 地址。将 null 值或"localhost"传递给此参数,则假定为本地主机。 |
username | 可选。 指定 MySQL 用户名。 |
password | 可选。 指定 MySQL 密码。这允许用户名用于不同的权限(取决于是否提供密码)。 |
database | 可选。 如果提供,将指定执行查询时使用的默认数据库。 |
port | 可选。 指定尝试连接 MySQL 服务器的端口号。 |
socket | 可选。 指定应使用的套接字或命名管道。 |
返回值
返回如下:
- mysqli::__construct() 始终返回一个表示与 MySQL 服务器的连接的对象,无论连接成功与否。
- mysqli_connect( ) 返回一个表示与 MySQL 服务器的连接的对象,失败时返回 false。
- mysqli::connect() 成功时返回 null,失败时返回 false。
异常
如果启用了 MYSQLI_REPORT_STRICT 并且尝试连接到请求的数据库失败,则会抛出 mysqli_sql_exception。
示例:面向对象风格
下面的示例显示了 mysqli::__construct() 方法的用法。
<?php
//启用mysqli错误报告
//尝试建立连接之前
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
printf("Success... %s\n", $mysqli->host_info);
?>
上述代码的输出将类似于:
Success... localhost via TCP/IP
示例:面向过程风格
下面的示例显示了mysqli_connect()函数的用法。
<?php
//启用mysqli错误报告
//尝试建立连接之前
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
printf("Success... %s\n", mysqli_get_host_info($mysqli));
?>
上述代码的输出将类似于:
Success... localhost via TCP/IP
示例:面向对象风格-手动错误处理
如果禁用错误报告,则用户负责检查和处理失败。考虑下面的示例:
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
throw new RuntimeException('mysqli connection error: ' . $mysqli->connect_error);
}
if ($mysqli->errno) {
throw new RuntimeException('mysqli error: ' . $mysqli->error);
}
?>
示例:面向过程风格 - 手动错误处理
考虑下面的示例,其中以面向过程风格手动处理错误。
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
throw new RuntimeException('mysqli connection error: ' . mysqli_connect_error());
}
if (mysqli_errno($mysqli)) {
throw new RuntimeException('mysqli error: ' . mysqli_error($mysqli));
}
?>