Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-11-2009 09:43:49

citronbleu-v
Membre
Lieu: Béziers ou Arles
Date d'inscription: 03-02-2009
Messages: 79
Site web

Action dangereuse

Je voudrais signaler et comprendre pourquoi si on fait par erreur :

Code:

        $proDoc = new ProDoc();
        $proDoc->delete(array('id_document' => $file->id));

Au lieu de  :

Code:

        $proDoc = new ProDoc();
        $proDoc->delete(array('id_document = ?' => $file->id));

Toute la table de ProDoc est complètement vidé. J'ai fait cet erreur et ça ne l'a pas trop fait neutral. Pourquoi il n'y a pas une Exception plutôt qui me dit que le code est incorrect.

Hors ligne

 

#2 09-11-2009 10:04:51

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Action dangereuse

Hello,

Parce que ton code est correct smile

Code:

// le SQL est valide
DELETE FROM toto WHERE true;

Il faudrait plutôt :

Code:

$proDoc = new ProDoc();
$proDocElement = $proDoc->find($file->id);
if ($proDocElement !== null) {
    try {
        $proDocElement->delete();
    } catch (Exception $e) {
        echo "Impossible de supprimer l'élément : " . $e->getMessage();
    }
    echo 'Elément supprimé';
} else {
    echo 'Aucun élément à supprimer';
}

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 09-11-2009 17:22:31

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Action dangereuse

Je débute en Zend mais j'aurai plutôt fait ça de la sorte afin d'éviter une requête ( find ).

Code:

$proDoc = new ProDoc();
$where = $proDoc->getAdapter()->quoteInto('id_document = ?', $file->id);
$result = $proDoc->delete($where);

Hors ligne

 

#4 09-11-2009 17:42:26

citronbleu-v
Membre
Lieu: Béziers ou Arles
Date d'inscription: 03-02-2009
Messages: 79
Site web

Re: Action dangereuse

J'ai vu plusieurs fois le fait de faire un find d'abord puis un delete du find. Mais cette solution a quoi comme d'autre comme avantage ? car ça fait 2 requêtes au final.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages