PHP PDO 与普通mysql_connect

2022-08-30 11:09:41

我应该使用php PDO还是普通mysql_connect来执行PHP中的数据库查询?

哪一个更快?

PDO 的一大优点是接口在多个数据库之间是一致的。对于预准备的语句,也有一些很酷的函数,它们消除了转义所有查询字符串的麻烦。PDO 的可移植性大于 mysql_connect。

那么,我应该出于这些原因使用PDO还是坚持传统的mysql_connect?


答案 1

PDO比mysql_慢一点*,但它具有很大的便携性。PDO 提供跨多个数据库的单一接口。这意味着您可以使用多个数据库,而无需对mysql使用mysql_query,mssql_query对MS sql等使用。只需始终使用类似$db->query(“INSERT INTO...”)之类的内容即可。无论您使用哪种数据库驱动程序。

因此,对于大型或便携式项目,PDO是优选的。甚至zend框架也使用PDO。


答案 2

一些快速计时表明 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服务器位于另一台主机上。

您提到了自己使用PDO的所有原因。实际上,永远不要直接使用mysql_*函数,要么使用PDO,要么使用其他


推荐