php - 为什么条件不满足时查询仍然运行?
问题描述
我得到了以下链接到数据库的测试 SQL 语句。我在数据库中没有任何匹配 900 的记录,但它返回结果 = 1 而不是 0。我能知道这是什么原因吗?
$query = "update mytable set verify = 'yes' where number ='900'";
$result = $conn->query($query);
if (!$result){
$json_out = "[" . json_encode(array("result"=>0)) . "]";
}
else {
$json_out = "[" . json_encode(array("result"=>1)) . "]";
}
echo $json_out;
解决方案
您得到 1 结果,因为您没有检查受影响的行。查询没有错误,因此您得到 1 结果。
为了使您的结果准确,您需要检查零与非零受影响的行。
http://php.net/manual/en/mysqli.affected-rows.php
未经测试的建议:
echo json_encode(['result' => (int)($conn->query("UPDATE mytable SET verify = 'yes' WHERE number = '900'") && $conn->affected_rows)]);
换句话说,如果查询返回非假结果并且受影响的行结果非零,则整个条件的计算结果为true
。如果你转换true
为整数,你得到 1;false
变为 0。
推荐阅读
- javascript - 将对象与对象数组中的对象合并
- python - 具有需要 dask 计算关键字参数的函数的自定义 dask 图
- python - 如何从整个函数返回单个变量?
- mysql - 在mysql中获取24小时后的日期
- android - AdMob 插页式广告尺寸对于我的 Android 手机来说非常大
- ios - 有没有办法使用 NetworkExtension 框架“注入”基本授权标头?
- kubernetes - 当 GCP 发布/订阅中的作业数量过多时初始化新服务
- sql - SQL比较case语句中一列中的多个数字
- python - “NoneType”对象没有属性“组”
- swift - Swift 4 - 结构静态变量不显示值