PHP
Database/MySQL

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

如果没有提供,或者NULLMySQL 服务器将尝试根据没有密码的用户记录对用户进行认证。这允许一个用户名使用不同的权限(取决于是否提供密码)。

dbname

如果提供将指定执行查询时使用的默认数据库。

port

指定尝试连接到 MySQL 服务器的端口号。

socket

指定应该使用的套接字或命名管道。

注意:指定socket参数不会明确确定连接到 MySQL 服务器时要使用的连接类型。如何连接到 MySQL 数据库由host参数决定。

返回值

返回一个表示到 MySQL 服务器的连接的对象。

更新日志

VersionDescription
5.3.0Added 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 →