Php Zend Db更新和删除方法和引用

Php Zend Db更新和删除方法和引用,php,zend-framework,zend-db,zend-db-table,Php,Zend Framework,Zend Db,Zend Db Table,在文件中 由于table update()方法代理数据库适配器update()方法,因此第二个参数可以是SQL表达式数组。使用AND运算符将表达式组合为布尔项。注意:SQL表达式中的值和标识符不带引号。如果您有需要引用的值或标识符,您有责任这样做。使用数据库适配器的quote()、quoteInto()和quoteIdentifier()方法 但当我检查源代码更新方法时,我看到了一些奇怪的东西(方法链执行): Zend_Db_Table_Abstract::update() Zend_Db_适

在文件中

由于table update()方法代理数据库适配器update()方法,因此第二个参数可以是SQL表达式数组。使用AND运算符将表达式组合为布尔项。注意:SQL表达式中的值和标识符不带引号。如果您有需要引用的值或标识符,您有责任这样做。使用数据库适配器的quote()、quoteInto()和quoteIdentifier()方法

但当我检查源代码更新方法时,我看到了一些奇怪的东西(方法链执行):

  • Zend_Db_Table_Abstract::update()
  • Zend_Db_适配器_抽象::更新()
  • Zend_Db_适配器_摘要::_whereExpr()
  • Zend_Db_Adapter_Abstract::quoteInto()

在Zend_Db_Adapter_Abstract::quoteInto()中有引号。有人能解释一下吗?可能文档已经过时了?

引用了这些值,文档中的注释引用了您传入的WHERE子句,您需要自己引用它。典型的用法是:

$table->update(array(
    'name' => $name, // this gets quoted
    'email' => $email // as does this
), $db->quoteInto('id = ?', $id));

但是$where也有报价。在_whereExpr()中有quoteInto()方法执行。是的,我上面的例子也可以写成
array('id',$id)
,然后会被引用。我认为这张便条是为了告诉人们,他们不能只传入像
id=$id
这样的字符串。相反,我认为array('id',$id)应该是array('id=?')=>id)。对吧?谢谢。我认为有关不引用的信息具有误导性。文档中有关于quote*方法的信息,但没有关于带有“?”符号的数组的信息。