10
votes

Comment déterminer si une requête de mise à jour MySQL a réussi lorsque les données passées dans la requête sont les mêmes que ce qui est déjà dans la base de données?

Disons que vous avez un formulaire avec des données pré-remplacées de votre base de données et que vous autorisez vos utilisateurs à apporter des modifications et enregistrez le formulaire. Si l'utilisateur clique sur le bouton Enregistrer sans modifier, MySQL n'effectuera pas réellement une opération d'écriture et, par conséquent, les caractères indiqués.

Je comprends le comportement, mais quelle est la meilleure pratique pour déterminer si une mise à jour a échoué, autrement que la vérification du nombre de points concernés?

Quelle est la meilleure pratique pour la différenciation entre une mise à jour qui a échoué en réalité, et celle qui "réussie" mais a abouti à 0 concerné_roche afin que je puisse fournir des commentaires à l'utilisateur?


0 commentaires

4 Réponses :


6
votes

Vérifiez simplement si aucune erreur n'est produite après l'exécution de la requête.
Si vous utilisez mysql , cochez mysql_error () :
si (! mysql_error ()) Imprimer 'Tout va bien ";
Même chose pour
MySQLI .


1 commentaires

Une mise à jour ne retournera jamais une erreur simplement parce que vous n'avez pas mis à jour. La requête a été exécutée ok. mysql_affected_rows ($ dB) ou mysqli_affected_rows ($ db) est le bon.



2
votes

Si la mise à jour "échoue" en raison d'une erreur de syntaxe ou d'une autre mySQL retournera un code d'erreur sur la requête MySQL réelle et affectée_Rows reviendra avec une autre erreur.

php par exemple: P>

$qry = mysql_query("update blah where IamaSyntaxerror,33");
if ($qry === FALSE) { echo "an error has occured"; }

else  { mysql_affected_rows() == 0  means no updates occured


1 commentaires

$ sql = "relevé SQL"; mysql_query ($ SQL) ou mourir (mysql_error ()); Si (mysql_affected_rows () || mysql_affecte_rows () == 0) {// aucune erreur} else {// erreur}



4
votes

[affecté_Rows ()] [1] est -1 si une requête échoue, pas zéro.

[1]: http: //www.php. net / manuel / fr / fonction.mySQL-affectés-row.php

Il peut renvoyer 0 si aucune modification n'a été apportée à la ligne (mêmes valeurs) ou si MySQL n'a pas trouvé de ligne à mettre à jour. Il ne retournera que -1 dus syntaxe erro


0 commentaires

4
votes

variation 1: strong> xxx pré>

variation 2: strong> p> xxx pré>

VARIATION 3: STRAND> P>

try {
  $conn = mysql_query();
  if (!$conn) throw new Exception("mysql Error");
} catch(Exception $e) {
  echo $e->getMessage();
}


0 commentaires