PHP MySQLi 函数

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));
}
?>