web-dev-qa-db-fra.com

Que retourne avec succès MySQL DELETE? Comment vérifier si DELETE a réussi?

En utilisant PHP, j'essaie de supprimer un enregistrement, mais je veux vérifier s'il a réussi ou non. Est-ce que quelque chose est retourné d'un DELETE FROM foo where bar = 'stuff' réussi? 

Sinon, connaissez-vous un autre moyen de vérifier si un DELETE a réussi? Ou suis-je mieux de simplement m'assurer que la ligne existe avant de la supprimer? J'essaie d'éviter une autre requête si possible.

49
jergason

En supposant que vous utilisez mysql_query :

Pour les autres types d'instructions SQL, INSERT, UPDATE, DELETE, DROP, etc., mysql_query () renvoie TRUE en cas de succès ou FALSE en cas d'erreur. 

Si vous utilisez PDO :: exec , le manuel dit ceci:

PDO :: exec () renvoie le nombre de lignes modifiées ou supprimées par l'instruction SQL que vous avez émise. Si aucune ligne n'a été affectée, PDO :: exec () renvoie 0. 

Je ne veux pas répondre à votre question, mais comme cette réponse a été sélectionnée, je dois noter que mysql_query retournera TRUE même si la requête n'a rien supprimé. Vous devriez utiliser mysql_affected_rows pour vérifier cela.

57
Paolo Bergantino

De plus, si vous vous souciez du nombre de lignes affectées:

[Utilisez] mysql_affected_rows () pour connaître le nombre de lignes affectées par une instruction DELETE, INSERT, REPLACE ou UPDATE. 

35
biggusjimmus

vous pouvez essayer ceci pour votre code php, placé après votre requête:

if (mysql_affected_rows() > 0) {
    echo "You have successfully updated your data.<br><br>";
}
else {
    echo "The data you submitted matched the current data so nothing was changed.<br><br>";
}
15
ryan

Pour les autres types d'instructionsSQL, INSERT, UPDATE, DELETE, DROP, etc., mysql_query() renvoieTRUEen cas de succès ouFALSEen cas d'erreur.

0
jedbonheur