您的位置:首页 > 数据库

PDO在连接数据库时所可能遇到的问题

2016-09-04 23:20 946 查看
这里简单总结一下,在使用PDO一开始,也就是构造函数的时候所可能遇到的问题。

连接远程数据库的空格问题

<?php
$conn = new PDO('mysql:host=123.4.5.6;dbname=test_db;port=3306','username','password');
?>


有的同学无论怎么样都会失败,人儿如果说你在mysql:与host上加上一个空格就会成功

<?php
$conn = new PDO('mysql: host=123.4.5.6;dbname=test_db;port=3306','username','password');
?>


$pdo=null不能关闭连接

文档上有一点说的不是很准确,在使用PHP 5.4.26,如果说你只是把Pdo实例置为null可能并不会关上连接。

尝试下面的代码

$pdo = new PDO('pgsql:host=192.168.137.1;port=5432;dbname=anydb', 'anyuser', 'pw');
sleep(5);
$stmt = $pdo->prepare('SELECT * FROM sometable');
$stmt->execute();
$pdo = null;
sleep(60);
?>


检查一下你的mysql,你会惊讶的发现,连接会持续60秒,有人会以为是结果集的问题

<?php
$pdo = new PDO('pgsql:host=192.168.137.160;port=5432;dbname=platin', 'cappytoi', '1111');
sleep(5);
$stmt = $pdo->prepare('SELECT * FROM admin');
$stmt->execute();
$stmt->closeCursor();
$pdo = null;
sleep(60);
?>
```

你会惊讶的发现还是不可以。你需要做的只是把statement置为null即可


构造方法中PDO::ATTR_ERRMODE

如果你在构造方法中使用上述代码,无论如何都会出发一个警告,抛出一个异常,如果你设置PDO::ATTR_ERRMODE 参数,只会在今后的使用中出发警告异常。

尽量使用127.0.0.1

如果说你用的不是默认端口,使用localhost就会有问题

为什么呐?

如果用localhost,mysql库就会自动的使用Unix sockets。为了强制的使用TCP/IP你需要指定Ip地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql pdo 数据库