mysqli: real_connect
mysqli_real_connect
打开到mysql服务器的连接
描述
面向对象的风格
公共保龄球mysqli: real_connect(字符串宿主,
字符串用户名,
字符串passwd,
字符串dbname,
int港口,
字符串套接字,
int旗帜);
程序上的风格
保龄球mysqli_real_connect(mysqli链接,
字符串宿主,
字符串用户名,
字符串passwd,
字符串dbname,
int港口,
字符串套接字,
int旗帜);
建立到MySQL数据库引擎的连接。
这个函数不同于mysqli_connect
:
mysqli_real_connect
需要一个必须由函数创建的有效对象mysqli_init
.与
mysqli_options
函数,您可以为连接设置各种选项。有一个
旗帜
参数。
参数
-
链接
-
返回的链接标识符
mysqli_connect
或mysqli_init
-
宿主
-
可以是主机名或IP地址。通过
零
值或此参数的字符串"localhost",则假定为本地主机。如果可能,将使用管道来代替TCP/IP协议。 -
用户名
-
MySQL用户名。
-
passwd
-
如果提供或
零
, MySQL服务器将尝试根据那些没有密码的用户记录对用户进行身份验证。这允许一个用户名使用不同的权限(取决于是否提供密码)。 -
dbname
-
将指定执行查询时要使用的默认数据库。
-
港口
-
指定试图连接到MySQL服务器的端口号。
-
套接字
-
指定应该使用的套接字或命名管道。
请注意指定
套接字
参数不会显式决定连接到MySQL服务器时使用的连接类型。如何连接到MySQL数据库是由宿主
参数。 -
旗帜
-
与参数
旗帜
您可以设置不同的连接选项:表3.11支持的标志
的名字 描述 MYSQLI_CLIENT_COMPRESS
使用压缩协议 MYSQLI_CLIENT_FOUND_ROWS
返回匹配的行数,而不是受影响的行数 MYSQLI_CLIENT_IGNORE_SPACE
允许函数名后面有空格。使所有函数名都保留字。 MYSQLI_CLIENT_INTERACTIVE
允许 interactive_timeout
秒(而不是wait_timeout
秒)在关闭连接之前处于静止状态MYSQLI_CLIENT_SSL
使用SSL(加密) MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT
就像 MYSQLI_CLIENT_SSL
,但禁用对提供的SSL证书进行验证。这只适用于使用MySQL Native Driver和MySQL 5.6或更高版本的安装。
请注意出于安全考虑,
MULTI_STATEMENT
flag在PHP中不支持。如果您想执行多个查询,请使用mysqli_multi_query
函数。
返回值
返回真正的
在成功或假
在失败。
例子
例3.60mysqli: real_connect
例子
面向对象的风格
<?PHP $mysqli = mysqli_init();If (!$mysqli) {die('mysqli_init失败');如果(}!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0') {die('设置MYSQLI_INIT_COMMAND失败');如果(}!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5) {die('设置MYSQLI_OPT_CONNECT_TIMEOUT失败');如果(}!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db') {die('连接错误(')。mysqli_connect_errno()。 ') ' . mysqli_connect_error()); } echo 'Success... ' . $mysqli->host_info . "\n"; $mysqli->close(); ?>
扩展mysqli类时使用面向对象的样式
<?PHP类foo_mysqli扩展了mysqli{公共函数__construct($host, $user, $pass, $db) {parent::init();如果(!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {die('设置MYSQLI_INIT_COMMAND失败');如果(}!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {die('设置MYSQLI_OPT_CONNECT_TIMEOUT失败');如果(}!parent::real_connect($host, $user, $pass, $db)) {die('连接错误(')。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失败');如果(}!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); ?>
上面的例子将输出:
成功……MySQL主机信息:本地主机通过TCP/IP
笔记
MySQLnd总是假定服务器默认字符集。这个字符集在连接握手/身份验证期间发送,mysqlnd将使用这个字符集。
Libmysqlclient使用my.cnf
或者通过显式调用mysqli_options
之前调用mysqli_real_connect
,但在mysqli_init
.
另请参阅
mysqli_connect |
mysqli_init |
mysqli_options |
mysqli_ssl_set |
mysqli_close |