PHP PDO 与普通mysql_connect
我应该使用php PDO还是普通mysql_connect来执行PHP中的数据库查询?
哪一个更快?
PDO 的一大优点是接口在多个数据库之间是一致的。对于预准备的语句,也有一些很酷的函数,它们消除了转义所有查询字符串的麻烦。PDO 的可移植性大于 mysql_connect。
那么,我应该出于这些原因使用PDO还是坚持传统的mysql_connect?
我应该使用php PDO还是普通mysql_connect来执行PHP中的数据库查询?
哪一个更快?
PDO 的一大优点是接口在多个数据库之间是一致的。对于预准备的语句,也有一些很酷的函数,它们消除了转义所有查询字符串的麻烦。PDO 的可移植性大于 mysql_connect。
那么,我应该出于这些原因使用PDO还是坚持传统的mysql_connect?
PDO比mysql_慢一点*,但它具有很大的便携性。PDO 提供跨多个数据库的单一接口。这意味着您可以使用多个数据库,而无需对mysql使用mysql_query,mssql_query对MS sql等使用。只需始终使用类似$db->query(“INSERT INTO...”)之类的内容即可。无论您使用哪种数据库驱动程序。
因此,对于大型或便携式项目,PDO是优选的。甚至zend框架也使用PDO。
一些快速计时表明 PDO 在连接时速度稍快。
$start = microtime(true);
for($i=0; $i<10000; ++$i) {
try {
$db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage()."\n";
}
$db = null;
}
$pdotime = microtime(true) - $start;
echo "PDO time: ".$pdotime."\n";
$start = microtime(true);
for($i=0; $i<10000; ++$i) {
$db = mysql_connect($host, $user, $password);
if(!$db) {
echo "Connection failed\n";
}
if(!mysql_select_db($schema, $db)) {
echo "Error: ".mysql_error()."\n";
}
mysql_close($db);
}
$rawtime = microtime(true) - $start;
echo "Raw time: ".$rawtime."\n";
给出如下结果
PDO time: 0.77983117103577
Raw time: 0.8918719291687
PDO time: 0.7866849899292
Raw time: 0.8954758644104
PDO time: 0.77420806884766
Raw time: 0.90708494186401
PDO time: 0.77484893798828
Raw time: 0.90069103240967
无论如何,速度差异可以忽略不计;建立网络连接可能需要比PDO产生的任何开销更长的时间,特别是如果mysql服务器位于另一台主机上。