当我从正在使用的API接收到一些数据时,我正在更新DB。
我将value
更改为数据库中没有的内容,同时我正在测试它是否会发出错误。事实并非如此,一切都像var是一场比赛一样进行,DB也被更新了。
有什么方法可以对此进行检查?
foreach($message_id_array as $key=>$value) {
$query = "UPDATE `sms_messages_tbl`
SET `delivery2_api_to_enduser`= '1',
`delivery2_response_time` = UTC_TIMESTAMP(),
`delivery2_response_api_ip`= '".$ip."',
`delivery2_response_from_api`= '".$message_status_array[$key]."'
WHERE `transaction_sms_id` = '".$value."' ";
if ($conn->query($query) === TRUE) {
echo ''.$message_status_array[$key].':'.$value.':OK';
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
}
没有返回任何错误,因为MySQL不会在UPDATE
上返回任何错误(当然,与语法模式相关的错误除外)。
你可以进入phpMyAdmin
,因为我猜你正在使用它,并用一些伪值运行相同的更新,你会看到结果是success
和0 affected rows
。
更新仍然成功进行,并且没有影响任何行,因为没有一行符合要求。
为了更清楚地了解发生了什么,您可以使用以下方法查找受影响的行数:
if ($conn->query($query) === TRUE) {
echo ''.$message_status_array[$key].':'.$value.':OK';
echo $conn->affected_rows . ' affected';
}
它会说更新很好,受影响的行数是0
。
我建议向数据库"select*FROM table WHERE'id'=$value"发出选择请求。
然后在上面运行mysqli_num_rows。如果结果!=0,执行SET查询。