gpt4 book ai didi

php - UPDATE 的 mysqli_affected_rows 有时在全行匹配时返回 0

转载 作者:行者123 更新时间:2023-11-29 15:12:46 24 4
gpt4 key购买 nike

假设我有 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");

如何更改它以区分这 3 个条件:

  1. 找到的项目为 id=5并设置它。
  2. 未找到带有 id=5 的项目.
  3. 错误

按照现在的写法,如果我的数据库列val已有 1在该行中,mysqli_affected_rows将返回 0。

最佳答案

您可以使用mysqli_info获取区分这两种情况所需的信息。 UPDATE 查询后的 mysqli_info($link) 将返回类似的字符串

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$changed 中的值来区分两种情况。

关于php - UPDATE 的 mysqli_affected_rows 有时在全行匹配时返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59942608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com