如果没有编辑数据,PHP Update会给出错误

时间:2011-09-30 08:32:10

标签: php mysql forms

感谢您让我更清楚地提问。

我有一个用于保存数据库内容的表单。 用户还可以通过编辑表单中的字段并提交来更新任何内容。

更新查询如下所示: -

$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

2 个答案:

答案 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