php中的mysql连接字符串注意事项

4 篇文章 0 订阅
4 篇文章 0 订阅

原帖地址:http://blog.csdn.net/ffb/article/details/8895630


php里有三套操作mysql的库,分别是自带的mysql系列函数、mysqli和mysqlpdo。这三套库的下层又使用了两个数据操作引擎,分别是libmysql和mysqlnd,具体使用哪个引擎由php编译时决定。

在实际使用这三个库的时候,存在一个小的问题,就是连接字符串的写法。对于host:port的格式,在libmysql中和mysqlnd中支持情况有差异。所以如果你使用了这种写法又切换了引擎或者使用的库,则可能导致问题。


下面结合新浪云计算SAE中的数据库操作列举一下各种情况,如非说明,默认均是libmysql环境下,具体是:php内置mysql函数的正确写法:

mysql_connect('127.0.0.1:3306', $user, $password);

其中第一个参数是host:port格式,libmysql引擎、mysqlnd和SAE均支持这种格式的写法。

官方的说明在:http://cn2.php.net/manual/en/function.mysql-connect.php


mysqli中的正确写法:

$conn = new mysqli("127.0.0.1", $user, $pwd, $db, "3306");

如果写成:

$conn = mysqli_connect('127.0.0.1:3306', $user, $password);

或:

$conn = new mysqli("127.0.0.1:3306", $user, $pwd);

其中第一个参数是host:port格式,原生mysqli不支持这种写法,在SAE中支持此写法。

官方的说明在:http://cn2.php.net/manual/en/function.mysqli-connect.php


pdomysql中的正确写法:

$conn= new PDO('mysql:host=127.0.0.1;port=3306', $user, $password);

原生mysqlpdo和SAE均支持此写法。

如果写成:

$conn= new PDO('mysql:host=127.0.0.1:3306', $user, $password);

原生mysqlpdo和SAE均不支持此种写法。但是在mysqlnd引擎环境下,支持此写法。

官方的说明在:http://cn2.php.net/manual/en/pdo.construct.php


综上得到针对host:port格式的支持情况的列表:

libmysql引擎下:

mysql:支持

mysqli:不支持(SAE中做了支持)

mysqlpdo:不支持


mysqlnd引擎下:

mysql:支持

mysqli:支持

mysqlpdo:支持


结论:php中操作mysql数据库的时候,从兼容性角度考虑,最好明确指示port参数,而不要使用冒号分隔的缩写写法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值