mysqli::__construct
(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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com