Mysql
 sql >> Database >  >> RDS >> Mysql

Differenza tra PDO->query() e PDO->exec()

Nonostante qualsiasi differenza teorica, nessuna di queste funzioni dovrebbe essere comunque utilizzata, quindi non c'è nulla di cui preoccuparsi.

L'unico motivo per utilizzare PDO è il supporto per le dichiarazioni preparate , ma nessuna di queste funzioni lo offre. Quindi, non dovrebbero essere usati.

Usa prepare()/execute() invece, soprattutto per le istruzioni UPDATE,INSERT,DELETE.

Si prega di notare che sebbene le dichiarazioni preparate siano ampiamente pubblicizzate come misura di sicurezza, è solo per attirare l'attenzione della gente. Ma il loro vero scopo è la formattazione corretta della query . Il che ti dà anche sicurezza - poiché anche la query formattata correttamente non può essere iniettata - proprio come effetto collaterale. Ma ancora una volta:la formattazione è un obiettivo primario, solo perché anche dati innocenti possono causare un errore di query se non formattati correttamente.

EDIT:Tieni presente che execute() restituisce solo TRUE o FALSE per indicare il successo dell'operazione. Per altre informazioni, come il numero di record interessati da un UPDATE , metodi come rowCount() sono forniti. Consulta i documenti .