mysqli: __construct
mysqli:连接
mysqli_connect
打开一个到MySQL服务器的新连接
描述
面向对象的风格
公共mysqli: __construct(字符串宿主= = ini_get(“mysqli.default_host”),
字符串用户名= = ini_get(“mysqli.default_user”),
字符串passwd= = ini_get(“mysqli.default_pw”),
字符串dbname= = ",
int港口= = ini_get(“mysqli.default_port”),
字符串套接字= = ini_get(“mysqli.default_socket”));
公共无效mysqli:连接(字符串宿主= = ini_get(“mysqli.default_host”),
字符串用户名= = ini_get(“mysqli.default_user”),
字符串passwd= = ini_get(“mysqli.default_pw”),
字符串dbname= = ",
int港口= = ini_get(“mysqli.default_port”),
字符串套接字= = ini_get(“mysqli.default_socket”));
程序上的风格
mysqli |假mysqli_connect(字符串宿主= = ini_get(“mysqli.default_host”),
字符串用户名= = ini_get(“mysqli.default_user”),
字符串passwd= = ini_get(“mysqli.default_pw”),
字符串dbname= = ",
int港口= = ini_get(“mysqli.default_port”),
字符串套接字= = ini_get(“mysqli.default_socket”));
打开到MySQL服务器的连接。
参数
-
宿主
-
可以是主机名或IP地址。属性时,假定为本地主机
零
值或字符串"localhost"赋给此参数。如果可能,将使用管道而不是TCP/IP协议。如果主机名和端口号同时提供,则使用TCP/IP协议。localhost: 3308
.预挂主机由
病人:
打开一个持久连接。mysqli_change_user
在从连接池打开的连接上自动调用。 -
用户名
-
MySQL用户名。
-
passwd
-
如未提供或
零
, MySQL服务器将尝试根据那些没有密码的用户记录来验证用户。这允许一个用户名使用不同的权限(取决于是否提供密码)。 -
dbname
-
如果提供,将指定执行查询时使用的默认数据库。
-
港口
-
指定试图连接到MySQL服务器的端口号。
-
套接字
-
指定应使用的套接字或命名管道。
请注意指定
套接字
当连接到MySQL服务器时,参数不会显式地确定要使用的连接类型。如何连接到MySQL数据库是由宿主
参数。
返回值
mysqli: __construct
无论成功与否,总是返回一个表示连接到MySQL服务器的对象。
mysqli_connect
返回一个表示连接到MySQL服务器的对象,或者假
在失败。
mysqli:连接
返回零
成功与否假
在失败。
错误/异常
如果MYSQLI_REPORT_STRICT
启用,并且尝试连接到所请求的数据库失败,则mysqli_sql_exception
抛出。
例子
例3.36mysqli: __construct
例子
面向对象的风格
<?你应该在尝试建立连接之前为mysqli启用错误报告*/ mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');/*建立连接后设置所需的字符集*/ $mysqli->set_charset('utf8mb4');printf("成功…% s \ n”,mysqli - > host_info);
程序上的风格
<?你应该在尝试建立连接之前为mysqli启用错误报告*/ mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');/*建立连接后设置所需的字符集*/ mysqli_set_charset($mysqli, 'utf8mb4');printf("成功…% s \ n”,mysqli_get_host_info (mysqli美元));
上面的例子将输出类似于:
成功……localhost通过TCP/IP
例3.37扩展mysqli类
<?php类FooMysqli扩展mysqli{公共函数__construct($host, $user, $pass, $db, $port, $socket, $charset) {mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);Parent::__construct($host, $user, $pass, $db, $port, $socket);美元$ this - > set_charset(字符集);}} $db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');
3.38手动错误处理
如果错误报告被禁用,开发人员将负责检查和处理失败
面向对象的风格
<?php error_reporting (0);mysqli_report (MYSQLI_REPORT_OFF);$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');if ($mysqli->connect_errno){抛出新的RuntimeException('mysqli连接错误:')。mysqli - > connect_error);} /*建立连接后设置所需的字符集*/ $mysqli->set_charset('utf8mb4');if ($mysqli->errno){抛出新的RuntimeException('mysqli error: ')。mysqli - >错误);}
程序上的风格
<?php error_reporting (0);mysqli_report (MYSQLI_REPORT_OFF);$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');if (mysqli_connect_errno()){抛出新的RuntimeException('mysqli连接错误:')。mysqli_connect_error ());} /*建立连接后设置所需的字符集*/ mysqli_set_charset($mysqli, 'utf8mb4');if (mysqli_errno($mysqli)){抛出新的RuntimeException('mysqli error: ')。mysqli_error (mysqli美元));}
笔记
MySQLnd总是假设服务器默认字符集。这个字符集在连接握手/身份验证期间发送,mysqlnd将使用它。
的默认字符集my.cnf
或者通过显式调用mysqli_options
在打电话之前mysqli_real_connect
,但之后mysqli_init
.
仅面向对象样式:如果连接失败,仍然返回一个对象。要检查连接是否失败,请使用mysqli_connect_error
函数或mysqli - > connect_error属性。
如果需要设置连接超时等选项,mysqli_real_connect
必须改为使用。
调用不带参数的构造函数与调用相同mysqli_init
.
错误"不能创建TCP/IP套接字(10106)"通常意味着无法创建TCP/IP套接字variables_order配置指令不包含字符E
.在Windows上,如果没有复制环境SYSTEMROOT
环境变量将不可用,PHP将有问题加载Winsock。
另请参阅
mysqli_real_connect |
mysqli_options |
mysqli_connect_errno |
mysqli_connect_error |
mysqli_close |