Si je veux utiliser la méthode Zend_Db_Table->update()
pour mettre à jour ma table avec des données, je ne trouve quand même pas l'utilité d'utiliser des variables bind dans la clause "where".Comment utiliser les variables bind avec Zend_Db_Table-> update() dans la clause where
La signature de la méthode est:
int update($data, array|string $where)
Habituellement, vous appelez la méthode comme ceci:
$table = new Bugs();
$data = array(
'updated_on' => '2007-03-23',
'bug_status' => 'FIXED'
);
$where = $table->getAdapter()->quoteInto('bug_id = ?', 1234);
$table->update($data, $where);
quoteInto
va tout simplement pour échapper à la variable, lie pas.
Il doit y avoir un moyen d'utiliser des variables de liaison, sinon un SGBD ne mettra pas efficacement en cache cette requête. Est-ce que je manque quelque chose, ou est-ce un oubli de la part de Zend?
Merci. J'utilise Oracle dans une application d'entreprise interne. Vous avez raison, la performance n'est pas un problème en soi - j'ai posé cette question parce que j'aime suivre les meilleures pratiques lorsque c'est possible. Je peux donc réécrire mon code comme vous le suggérez ou accepter cette limitation avec Zend_Db_Table. C'est décevant, car c'est seulement la clause WHERE qui n'est pas liée - la clause SET utilise des variables liées sous le capot. On pourrait penser qu'ils fourniraient un moyen d'utiliser des variables liées pour toutes les parties de la requête. – asgeo1