如果没有编辑数据,PHP 更新会出错

标签 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 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/

相关文章:

php - 无法使用下拉菜单提交表单

php - 尝试显示数组的 mysql 查询结果

php - fatal error : Class 'PHPMailer' not found in

php - 为什么我无法在 HTML 上显示阿拉伯语

php - 无法让此自动电子邮件在 php 中工作。你能帮助我吗?

php - 验证 MySQL 表创建 - PDO

php - 如何使用ajax传递下拉选择的值并插入到mysql数据库中

mysql - 无法通过远程访问连接到mysql服务器

javascript - 如果输入太多数字,如何防止在 AngularJS 中使用 ng-pattern 验证的经过验证的屏蔽美国电话号码无效

django - Django 中的自定义登录