使用Zend_Db模型而不是mysqli有什么好处?

时间:2011-10-30 05:17:45

标签: php zend-framework mysqli zend-db

我刚刚开始使用ZF,并且有一些非常方便的库可以节省我很多时间但是我看不到使用Zend_DB类比mysqli更有优势。我不需要PDO,因为我总是使用MySQL作为DBMS。实际上,您经常在项目中间更改DBMS的频率是多少?

我对SQL很满意,所以不需要他们的抽象,只会让我感到困惑。

那么在我的类构造函数中有这个mysqli代码有什么优势,然后在需要它时只是SQL查询?

require_once("database_details.php");
$this->_mysql=new mysqli(DBSERVERHOST,DBUSERNAME,DBPASSWORD,DBNAME);

2 个答案:

答案 0 :(得分:2)

我不是ZF,但是裸露的mysqli只是丑陋。你可以用什么行来填充模板的代码是什么? 让我们假设它和

一样悲惨
$query = "SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $val1, $val2, $val3);
$stmt->execute();
$data = array();
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
    $data[] = $row;
}

(这只是手册中的简单示例,没有错误处理等强制性内容)

虽然使用某些库可以使其像

一样
$data=$db->getArr("SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?"
                   $val1, $val2, $val3);

只需计算常用脚本中的查询数量并感受其差异。

另请注意,您的宝贵SQL完好无损!

答案 1 :(得分:1)

有很多优点。我不知道所有这些,但有两个是杰出的:

1)适配器依赖/代码独立性 无论您使用什么数据库 - 您的查询代码都不会发生变化。

$db->select()->where('a=?', $b)->order('C DESC')->limit(5);

如果你的适配器是MySQL,PGSQL,MSSQL等没关系...我想甚至一些NoSQL数据库也支持Zend的相同查询格式

2)缓存 使用库进行查询时 - 特别是使用Zend或Doctrine(可组合!) - 缓存数据库查询是一件小事。为每个查询手动执行此操作,您注定要编写代码:P

3)可读性 就个人而言,我只是觉得使用图书馆(也可以是你自己的图书馆)也有很多可读性方面的优势