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. P>
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? P>
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? P>
4 Réponses :
Vérifiez simplement si aucune erreur n'est produite après l'exécution de la requête.
Si vous utilisez mysql code>, cochez mysql_error () A>:
si (! mysql_error ()) Imprimer 'Tout va bien "; code>
Même chose pour MySQLI . P>
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) code> ou mysqli_affected_rows ($ db) code> est le bon.
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
$ sql = "relevé SQL"; mysql_query ($ SQL) ou mourir (mysql_error ()); Si (mysql_affected_rows () || mysql_affecte_rows () == 0) {// aucune erreur} else {// erreur} code>
[affecté_Rows ()] [1] est -1 si une requête échoue, pas zéro. p>
[1]: http: //www.php. net / manuel / fr / fonction.mySQL-affectés-row.php p> blockQuote>
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 p>
VARIATION 3: STRAND> P> try {
$conn = mysql_query();
if (!$conn) throw new Exception("mysql Error");
} catch(Exception $e) {
echo $e->getMessage();
}