Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différence entre PDO->query() et PDO->exec()

Quelle que soit la différence théorique, aucune de ces fonctions ne devrait être utilisée de toute façon - il n'y a donc rien à craindre.

La seule raison d'utiliser PDO est la prise en charge des instructions préparées , mais aucune de ces fonctions ne l'offre. Donc, ils ne doivent pas être utilisés.

Utilisez prepare()/execute() à la place, surtout pour les instructions UPDATE, INSERT, DELETE.

Veuillez noter que bien que les déclarations préparées soient largement annoncées comme mesure de sécurité, c'est uniquement pour attirer l'attention des gens. Mais leur réel le but est le formatage correct des requêtes . Ce qui vous donne également la sécurité - car une requête correctement formatée ne peut pas être injectée - tout comme un effet secondaire. Mais encore une fois, le formatage est un objectif primordial, simplement parce que même des données innocentes peuvent provoquer une erreur de requête si elles ne sont pas formatées correctement.

EDIT :Veuillez noter que execute() renvoie uniquement TRUE ou FALSE pour indiquer le succès de l'opération. Pour d'autres informations, telles que le nombre d'enregistrements affectés par une UPDATE , des méthodes telles que rowCount() sont prévus. Voir la documentation .