首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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") ]]]]] )

程序风格

代码语言:javascript
复制
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 服务器的连接的对象。

更新日志

Version

Description

5.3.0

Added the ability of persistent connections.

例子

Example #1 mysqli::__construct() example

面向对象的风格

代码语言:javascript
复制
<?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 类时面向对象的风格

代码语言:javascript
复制
<?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();
?>

程序风格

代码语言:javascript
复制
<?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);
?>

上面的例子会输出:

代码语言:javascript
复制
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 →

扫码关注腾讯云开发者

领取腾讯云代金券