2009-05-22 3 views
6

Qualcuno può darmi un esempio di come eliminerei una riga in mysql con framework Zend quando ho due condizioni?Esempio di cancellazione multipla con framework Zend

cioè: (cercando di fare questo)

"DELETE FROM messages WHERE message_id = 1 AND user_id = 2" 

Il mio codice (che sta fallendo miseramente assomiglia a questo)

// is this our message? 
$condition = array(
        'message_id = ' => $messageId, 
        'profile_id = ' => $userId 
); 

$n = $db->delete('messages', $condition); 

risposta

8

Invece di un array associativo, si dovrebbe solo essere di passaggio in un serie di criteri di espressioni, ala:

$condition = array(
    'message_id = ' . $messageId, 
    'profile_id = ' . $userId 
); 

(e assicurarsi di fuggire quei valori appropriat ely se stanno venendo da input dell'utente)

+0

sarà questo venire fuori come: "DELETE FROM WHERE messaggi message_id = 1, user_id = 2" o "DELETE FROM WHERE messaggi (message_id = 1) e (user_id = 2)? – MichaelICE

+0

Prima credo – xenon

+0

Se leggo correttamente la fonte, in realtà metterà le parentesi attorno a ciascuna ... /library/Zend/Db/Adapter/Abstract.php, _whereExpr (riga 564 o giù di lì ...) –

29

meglio usare questo:?

$condition = array(
    'message_id = ?' => $messageId, 
    'profile_id = ?' => $userId 
); 

I simboli segnaposto() vengono sostituiti con i valori, sfugge caratteri speciali, e applica le virgolette intorno ad esso.

-3

Utilizzare questo, si sta lavorando ...

$data = array(
    'bannerimage'=>$bannerimage 
); 

$where = $table->getAdapter()->quoteInto('id = ?', 5); 

$table->update($data, $where); 
+0

Copia/Incolla non fa una buona risposta a – Andrew

+0

Specialmente quando la risposta mostra un "aggiornamento" invece di un "cancella". –