mysqli::__construct
mysqli::__construct
mysqli_connect
(PHP 5, PHP 7)
mysqli :: __ construct - mysqli_connect - 打开一个到 MySQL 服务器的新连接
描述
面向对象的风格
mysqli::
_
_
construct
([ string $host
= ini_
get("mysqli.default_
host") [, string $username
= ini_
get("mysqli.default_
user") [, string $passwd
= ini_
get("mysqli.default_
pw") [, string $dbname
= "" [, int $port
= ini_
get("mysqli.default_
port") , string $socket
= ini_
get("mysqli.default_
socket") ]]]]] )
程序风格
mysqli mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )
打开到 MySQL 服务器的连接。
参数
host
可以是主机名或 IP 地址。将NULL
值或字符串 “localhost” 传递给此参数,假定为本地主机。在可能的情况下,将使用管道而不是 TCP / IP 协议。
通过p
预占主机:
打开持久连接。在连接池打开的连接上自动调用 mysqli_change_user()。
username
MySQL 用户名。
passwd
如果没有提供,或者NULL
MySQL 服务器将尝试根据没有密码的用户记录对用户进行认证。这允许一个用户名使用不同的权限(取决于是否提供密码)。
dbname
如果提供将指定执行查询时使用的默认数据库。
port
指定尝试连接到 MySQL 服务器的端口号。
socket
指定应该使用的套接字或命名管道。
注意
:指定socket
参数不会明确确定连接到 MySQL 服务器时要使用的连接类型。如何连接到 MySQL 数据库由host
参数决定。
返回值
返回一个表示到 MySQL 服务器的连接的对象。
更新日志
Version | Description |
---|---|
5.3.0 | Added the ability of persistent connections. |
例子
Example #1 mysqli::
_
_
construct() example
面向对象的风格
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'
/*
* This is the "official" OO way to do it,
* BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
*/
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error
}
/*
* Use this instead of $connect_error if you need to ensure
* compatibility with PHP versions prior to 5.2.9 and 5.3.0.
*/
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error()
}
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close(
?>
扩展 mysqli 类时面向对象的风格
<?php
class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::__construct($host, $user, $pass, $db
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error()
}
}
}
$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db'
echo 'Success... ' . $db->host_info . "\n";
$db->close(
?>
程序风格
<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db'
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error()
}
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link
?>
上面的例子会输出:
Success... MySQL host info: localhost via TCP/IP
笔记
注意
:MySQLnd 始终采用服务器默认字符集。这个字符集在连接握手/认证期间发送,这是 mysqlnd 将使用的。Libmysqlclient 在调用 mysqli_real_connect()之前,但在 mysqli_init()之后,使用 my.cnf 中的默认字符集或通过显式调用 mysqli_options()。
注意:仅 OO 语法:如果连接失败,对象仍然返回。要检查连接是否失败,请使用 mysqli_connect_error()函数或 mysqli-> connect_error属性,如前面的示例中所述。
注意
:如果需要设置选项,例如连接超时,则必须使用 mysqli_real_connect()。
注意
:调用不带参数的构造函数与调用 mysqli_init()相同。
注
:错误“无法创建 TCP / IP 套接字(10106)”,通常指的variables_order配置指令不包含字符 ë。在 Windows 上,如果未复制环境,则 SYSTEMROOT 环境变量将不可用,并且 PHP 在加载 Winsock 时将遇到问题。
也可以看看
- mysqli_real_connect() - 打开到 mysql 服务器的连接
- mysqli_options() - 设置选项
- mysqli_connect_errno() - 返回上次连接调用的错误代码
- mysqli_connect_error() - 返回上次连接错误的字符串描述
- mysqli_close() - 关闭以前打开的数据库连接
← mysqli::$connect_error
mysqli::debug →