感谢您让我把问题说得更清楚。
我有一个用于将内容保存在数据库中的表单。 用户还可以通过编辑表单中的字段并提交来更新任何内容。
更新查询看起来像这样:-
$res = mysql_query("UPDATE freight SET .... WHERE id='$id'") or die ( mysql_error());
if(mysql_affected_rows() > 0){
//do some stuff
return true;
}
else{
return false;
}
现在我的问题是:如果用户在更新表单时更改了某些字段,mysql_affected_rows() > 0 所以我可以“//做一些事情”。 但是,如果用户不更改表单中的任何字段并简单地提交,mysql_affected_rows 返回 0 并且我到达 false block 。
我的印象是 UPDATE 每次都应该覆盖,因此 mysql_affected_rows() 应该返回 1,无论是否更改了任何字段。
我使用返回值在屏幕上显示适当的成功或错误消息。因此这是一个严重的错误。
您能否建议实现正确功能的正确方法是什么?
谢谢, 维什
最佳答案
mysql_affected rows()
-1 如果查询本身不能发送到服务器,可能是因为语法错误并且如果最后一个查询不是 INSERT 或 UPDATE 语句,则将返回。
When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possibility that mysql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.
因此您的解决方案可以通过以下逻辑实现(但这并不安全)
if(mysql_affected_rows()!=-1){
}
关于如果没有编辑数据,PHP 更新会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607844/