2009-05-22 7 views
6

¿Puede alguien darme un ejemplo de cómo eliminaría una fila en mysql con Zend Framework cuando tengo dos condiciones?Ejemplo de eliminación de varias condiciones con Zend framework

es decir: (tratando de hacer esto)

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

Mi código (que está fallando miserablemente se parece a esto)

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

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

Respuesta

8

En lugar de una matriz asociativa, sólo debería pasar en una matriz de expresiones de criterios, ala:

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

(y asegúrese de escapar de esos valores apropiados Ely si vienen desde la entrada del usuario)

+0

¿Esta salir como: "CANCELACIÓN de mensajes DONDE message_id = 1 y user_id = 2" o "BORRAR DE DONDE mensajes (message_id = 1) y (user_id = 2)? – MichaelICE

+0

Primero creo – xenon

+0

Si leo la fuente correctamente, pondrá los paréntesis alrededor de cada ... /library/Zend/Db/Adapter/Abstract.php, _whereExpr (línea 564 más o menos) ...) –

29

mejor usar esto:?

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

Los símbolos de marcador de posición() quedan sustituidos por los valores, Escapa caracteres especiales, y se aplica comillas alrededor de él.

-3

Uso esto, se está trabajando ...

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

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

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

Copiar/Pegar no es una buena respuesta hacer – Andrew

+0

Especialmente cuando la respuesta muestra una "actualización" en lugar de una "eliminar". –