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

mysqli::real_connect

(PHP 5, PHP 7)

mysqli :: real_connect - mysqli_real_connect - 打开到mysql服务器的连接

描述

面向对象的风格

代码语言:javascript
复制
bool mysqli::real_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )

程序风格

代码语言:javascript
复制
bool 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 或者命名通道。

Note: 指定 socket 参数并不能说明要采用何种方式连接数据库。 连接数据的方式由 host 设定。

flags

这里可以设置连接参数:

Name

Description

MYSQLI_CLIENT_COMPRESS

使用压缩协议

MYSQLI_CLIENT_FOUND_ROWS

返回语句匹配的行数,而不是影响的行数

MYSQLI_CLIENT_IGNORE_SPACE

允许函数名称后有空格,这将使所有的函数名称成为保留字。

MYSQLI_CLIENT_INTERACTIVE

在关闭连接之前允许等待?interactive_timeout?秒, 他替代?wait_timeout?设定。

MYSQLI_CLIENT_SSL

使用 SSL 加密

Note: 从安全角度考虑,在 PHP 中不可以使用 MULTI_STATEMENT, 若要执行多查询语句,请使用 mysqli_multi_query()

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

Example #1 mysqli::real_connect() 例子

面向对象风格

<?php $mysqli?=?mysqli_init(); if?(!$mysqli)?{ ????die('mysqli_init?failed'); } if?(!$mysqli->options(MYSQLI_INIT_COMMAND,?'SET?AUTOCOMMIT?=?0'))?{ ????die('Setting?MYSQLI_INIT_COMMAND?failed'); } if?(!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT,?5))?{ ????die('Setting?MYSQLI_OPT_CONNECT_TIMEOUT?failed'); } if?(!$mysqli->real_connect('localhost',?'my_user',?'my_password',?'my_db'))?{ ????die('Connect?Error?('?.?mysqli_connect_errno()?.?')?' .?mysqli_connect_error()); } echo?'Success...?'?.?$mysqli->host_info?.?"\n"; $mysqli->close(); ?>

面向对象风格 when extending mysqli class

<?php class?foo_mysqli?extends?mysqli?{ ????public?function?__construct($host,?$user,?$pass,?$db)?{ parent::init(); ????????if?(!parent::options(MYSQLI_INIT_COMMAND,?'SET?AUTOCOMMIT?=?0'))?{ ????????????die('Setting?MYSQLI_INIT_COMMAND?failed'); ????????} ????????if?(!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT,?5))?{ ????????????die('Setting?MYSQLI_OPT_CONNECT_TIMEOUT?failed'); ????????} ????????if?(!parent::real_connect($host,?$user,?$pass,?$db))?{ ????????????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_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); ?>

以上例程会输出:

代码语言:javascript
复制
Success... MySQL host info: localhost via TCP/IP

注释

Note: MySQLnd 总是使用服务器的默认字符集。此字符集在连接握手/认证时发送,并被 mysqlnd 使用。 Libmysqlclient 使用 my.cnf 中的默认字符集或者由在调用 mysqli_init() 之后,mysqli_real_connect() 之前先调用 mysqli_options() 来指定。

  • mysqli_connect() - mysqli::__construct 的别名
  • mysqli_init() - 初始化MySQLi并返回与mysqli_real_connect()一起使用的资源
  • mysqli_options() - 设置选项
  • mysqli_ssl_set() - 用于使用SSL建立安全连接
  • mysqli_close() - 关闭以前打开的数据库连接

← mysqli::query

mysqli::real_escape_string →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com