Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysqli_affected_rows para UPDATE às vezes retorna 0 na correspondência de linha completa


Você pode usar mysqli_info para obter as informações que você precisa para distinguir entre os dois casos. mysqli_info($link) após um UPDATE query retornará uma string algo como
Rows matched: 1 Changed: 1 Warnings: 0

que você pode analisar, por exemplo, usando 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";

Resultado:
12 rows matched, 8 rows changed

Você pode então usar os valores em $matched e $changed para distinguir entre seus dois casos.