【问题标题】:MySql error "could not update record" error number 0 - when no change to recordMySql 错误“无法更新记录”错误号 0 - 当没有更改记录时
【发布时间】:2014-01-19 10:08:22
【问题描述】:

当我使用 MySQLi 更新 MySQL 数据库中的字段时,我会检查受影响的行数以查看查询是否成功。如果该字段的值实际上没有改变,那么我会收到一条错误消息。例如,如果您尝试将字段“chips”的值更改为“utz”,而该值已经是“utz”,我会收到以下错误:

Could not update record: (0)

这是因为受影响的行数是 0,因为为什么要更改已经是正确值的东西。是否有避免此错误的“良好做法”方法?

我看到人们试图通过更新数据库中的“current_time_stamp”值来解决这个问题,以便始终更新字段。但这似乎不是处理此实例的好方法。

在我的网站上,我尝试检查值是否已更改。我使用 javascript 的 onChange 来调用一个函数,我设置了一个变量来反映所做的更改,我稍后会检查数据库是否应该更新。但这并不总是导致实际的变化。有时即使没有进行任何更改,该函数也会被调用。有什么建议吗?

这是我在检查受影响的行数时使用的代码:

    if ($databaseObject->affected_rows)
    {
        //echo "Success!<br>";
    }
    else 
    {
        echo "Could not update record: (" . $databaseObject->errno . ") " . $databaseObject->error . "<br>";
    }

【问题讨论】:

    标签: javascript php mysql mysqli


    【解决方案1】:

    当查询没有正确执行时,你会得到-1。那为什么不呢:

    if ($databaseObject->affected_rows != -1)
        {
            //echo "Success!<br>";
        }
        else 
        {
            echo "Could not update record: (" . $databaseObject->errno . ") " . $databaseObject->error . "<br>";
        }
    

    【讨论】:

      【解决方案2】:

      你能从mysql控制台运行命令吗

      SET SQL_SAFE_UPDATES=0;

      【讨论】:

        猜你喜欢
        • 2015-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        相关资源
        最近更新 更多