J'ai toujours eu des difficultés avec un concept assez basique dans mon code PHP INSERT/UPDATE. Devrais-je toujours vérifier le nombre de lignes affectées après chaque INSERT/UPDATE, car dans la grande majorité des cas, je ne fais qu'un seul INSERT/UPDATE et il semble causer plus de problèmes que de corrections en vérifiant qu'une seule ligne a été affectée . Ci-dessous est mon code standard pour effectuer le INSERT/UPDATE et ce code échoue si l'utilisateur met à jour un enregistrement sans rien changer parce que les lignes affectées seront 0. Je pourrais écrire du code pour vérifier qu'au moins un champ a changé mais sur de grandes formes cela semble très maladroit et se demandait si cela valait vraiment la peine parce que je n'ai jamais vraiment attrapé aucune erreur en vérifiant ce nombre de toute façon.PHP mysql_affected_rows() Devrais-je m'inquiéter?
<?php
$whereSql = '';
$groupSql = 'INSERT INTO';
if(isset($_POST['id']) && is_numeric($_POST['id'])){
$groupSql = 'UPDATE';
$whereSql = 'WHERE id = ' . $_POST['id'];
}
$groupSql .= ' sometable SET name="' . $name . '" ' . $whereSql;
$groupDb = mysqli_query($groupSql, $dbObject) or die("Login DB error:".mysql_error());
if(mysqli_affected_rows($dbObject) == 1){
//redirect
}else{
die('System Error');
}
-0,49 pour l'utilisation de mysql_query en 2013. – cHao
pourquoi ne pas imprimer erreur si mysql_affected_rows ($ dbObject) == -1. From manual -> Renvoie le nombre de lignes affectées en cas de succès, et -1 si la dernière requête a échoué. –
@cHao c'est le code existant –