说,如果我有MySQL查询来更新一行:
$res = mysqli_query($link,
"UPDATE table SET val=1 WHERE id=5");
if($res)
{
if(mysqli_affected_rows($link) > 0)
{
echo("Updated something!");
}
else
echo("Didn't update");
}
else
echo("Error");
如何更改它以区分这三个条件:
id=5
找到项目并进行设置。id=5
项目。以现在的方式编写,如果我的数据库列val
在该行中已经具有1
,则mysqli_affected_rows
将返回0。
您可以使用mysqli_info
来获取区分这两种情况所需的信息。 mysqli_info
查询后的mysqli_info($link)
将返回类似[]的字符串
UPDATE
然后您可以解析,例如使用
Rows matched: 1 Changed: 1 Warnings: 0
:
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";
然后您可以使用
12 rows matched, 8 rows changed
和$matched
中的值来区分两种情况。