2013-03-14 4 views
0

В documenation вZend Db обновление и метод удаления и цитирование

Поскольку метод обновления таблицы() прокси для метода обновления адаптера базы данных(), то второй аргумент может быть массивом выражений SQL. Выражения объединяются в виде булевых терминов с использованием оператора И. Примечание. Значения и идентификаторы в выражении SQL не указаны для вас. Если у вас есть значения или идентификаторы, требующие цитирования, вы несете ответственность за это. Используйте методы quote(), quoteInto() и quoteIdentifier() адаптера базы данных.

Но когда я проверил метод обновления источника, и я увидел что-то странное (цепь метода выполняющийся):

  • Zend_Db_Table_Abstract :: Update()
  • Zend_Db_Adapter_Abstract :: Update()
  • Zend_Db_Adapter_Abstract :: _ WhereExpr()
  • Zend_Db_Adapter_Abstract :: quoteInto()

и в Zend_Db_Adapter_Abstract :: quoteInto() есть цитирование. Может ли кто-нибудь объяснить это? Может быть, документация устарела?

ответ

0

Значения цитируются, примечание в документации относится к предложению WHERE, которое вы передаете, которое вам нужно процитировать. Типичное использование будет:

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

Но $ также цитируется. В _whereExpr() выполняется выполнение метода quoteInto(). – PaulP

+1

Да, мой пример выше также может быть записан как 'array ('id', $ id)', который затем будет указан. Я думаю, что примечание заключается в том, чтобы рассказать людям, что они не могут просто передать строку, например 'id = $ id'. –

+1

Я думаю, что вместо этого массив ('id', $ id) должен быть массивом ('id =?' => $ Id). Правильно? – PaulP