为什么要将sql查询转换为Zend_Db样式?

时间:2012-07-11 19:56:25

标签: php zend-framework zend-db

我想问为什么人们使用zend_db样式?

e.g。

     $select = $d2b->select()
             ->from('users', array('userid','username'))
             ->where('userid=?', 2);

 $result = $d2b->fetchRow($select);
 echo $result->username;

而不是

$result = $d2b->fetchAll('SELECT * FROM users WHERE userid = ?', 2);
echo $result[0]->username;

哪一个更好?或者它是一样的,只是为了可维护性。

2 个答案:

答案 0 :(得分:6)

一个原因是使用Zend_db样式抽象出SQL的生成;这意味着我们在数据库引擎之间切换可以像交换类一样简单,而不必重新编写不兼容的查询。

此外,Zend_db抽象出SQL查询转义,大大降低了SQL注入攻击的风险。它还为那些不了解SQL的人提供数据库查询功能。

答案 1 :(得分:5)

最终结果是一样的,所以这取决于您对可读性和可维护性的个人偏好。

流畅的界面风格的一个优点是它可以更容易地以编程方式构建查询,例如:

$select = $d2b->select()
         ->from('users', array('userid','username'));

if ([some condition]) {
    $select->where('userid = ?', 2);
} else {
    $select->where('userid = ?', 62);
}