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

Sla*_*lay 1 php zend-framework zend-db

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

例如

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

 $result = $d2b->fetchRow($select);
 echo $result->username;
Run Code Online (Sandbox Code Playgroud)

代替

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

哪一个更好?或者它是相同的,只是为了可维护性.

Ric*_* Ye 6

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

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


Tim*_*ain 5

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

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

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

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