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

mysqli_affected_rows pour UPDATE renvoie parfois 0 sur une correspondance de ligne complète

Vous pouvez utiliser mysqli_info pour obtenir les informations dont vous avez besoin pour faire la distinction entre les deux cas. mysqli_info($link) après une UPDATE la requête renverra une chaîne quelque chose comme

Rows matched: 1 Changed: 1 Warnings: 0

que vous pouvez ensuite analyser, par exemple en utilisant preg_match :

// $info = mysqli_info($link);
$info = 'Rows matched: 12 Changed: 8 Warnings: 0';
preg_match('/Rows matched: (\d+) Changed: (\d+)/', $info, $matches);
list(, $matched, $changed) = $matches;
echo "$matched rows matched, $changed rows changed\n";

Sortie :

12 rows matched, 8 rows changed

Vous pouvez ensuite utiliser les valeurs dans $matched et $changed pour faire la distinction entre vos deux cas.