PHP mysqli_real_connect MySQLi 函数

  • 定义和用法

    mysqli_real_connect - 建立一个 MySQL 服务器连接
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
  • 语法

    mysqli_real_connect ( mysqli $link [, string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )
    
    建立一个到 MySQL 服务器的链接。
    mysqli_connect() 的不同点:
    • mysqli_real_connect() 需要一个有效的对象,这个对象由 mysqli_init() 创建。
    • 可以使用 mysqli_options() 设置各种连接设置。
    • 提供 flags 参数。
  • 参数

    参数 必需的 描述
    link mysqli_connect()mysqli_init() 返回的链接标识。
    host 可以使用域名、IP 地址。如果传送 NULL 或者字符串 "localhost" 那么会使用 通道替代 TCP/IP 连接本地服务器。
    username MySQL 登录用户名
    passwd 如果设置 NULL,那么会使用没有密码验证的方式尝试登录。这样可以为一个用户 提供不同的权限,基于他是否提供了密码。
    dbname 设置执行查询语句的默认数据库。
    port 指定 MySQL 服务器的端口
    socket 指定使用的 socket 或者命名通道。
    指定 socket 参数并不能说明要采用何种方式连接数据库。 连接数据的方式由 host 设定。
    flags 这里可以设置连接参数:
    • MYSQLI_CLIENT_COMPRESS 使用压缩协议
    • MYSQLI_CLIENT_FOUND_ROWS 返回语句匹配的行数,而不是影响的行数
    • MYSQLI_CLIENT_IGNORE_SPACE 允许函数名称后有空格,这将使所有的函数名称成为保留字。
    • MYSQLI_CLIENT_INTERACTIVE 在关闭连接之前允许等待 interactive_timeout 秒, 他替代 wait_timeout 设定。
    • MYSQLI_CLIENT_SSL 使用 SSL 加密
    从安全角度考虑,在 PHP 中不可以使用 MULTI_STATEMENT, 若要执行多查询语句,请使用 mysqli_multi_query()
  • 返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE。
  • 示例

    <?php
    $link = mysqli_init();
    if (!$link) {
        die('mysqli_init failed');
    }
    
    if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
        die('Setting MYSQLI_INIT_COMMAND failed');
    }
    
    if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
        die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
    }
    
    if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error());
    }
    
    echo 'Success... ' . mysqli_get_host_info($link) . "\n";
    
    mysqli_close($link);