感谢您让我更清楚地提问。
我有一个用于保存数据库内容的表单。 用户还可以通过编辑表单中的字段并提交来更新任何内容。
更新查询如下所示: -
$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块。
我的印象是UPDATE每次都应该覆盖,因此mysql_affected_rows()应该返回1,而不管是否有任何字段被更改。
我使用返回值在屏幕上显示相应的成功或错误消息。因此,这是一个严重的错误。
你能说明什么是正确的方法来实现正确的功能吗?
谢谢, Vish
答案 0 :(得分:1)
mysql_affected rows()
-1 ,可能是因为语法错误并且如果最后一个查询不是INSERT或UPDATE语句
使用UPDATE时,MySQL不会更新新值的列 与旧值相同。这创造了这样的可能性 mysql_affected_rows()实际上可能不等于行数 匹配,只有受字面意义影响的行数 查询。
所以你的解决方案可以通过以下逻辑实现(但这不安全)
if(mysql_affected_rows()!=-1){
}
答案 1 :(得分:0)
if( $_POST['message'] != '' ) {
// add the field to your query
} else { // this is optional
// don't add it to your query
}
// do the mysql update here