Php Can';是否将行更新为与当前相同的值?

Php Can';是否将行更新为与当前相同的值?,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我有一个类似的程序 add_action( 'wp_ajax_case_update', 'case_update' ); function case_update ( ) { $id = $_POST['id']; $compname = $_POST['compname']; $casename = $_POST['casename']; $imageurl = $_POST['imageurl']; $summary = $_POST['summa

我有一个类似的程序

add_action( 'wp_ajax_case_update', 'case_update' );

function case_update ( )
{
    $id = $_POST['id'];
    $compname = $_POST['compname'];
    $casename = $_POST['casename'];
    $imageurl = $_POST['imageurl'];
    $summary = $_POST['summary'];
    $results = $_POST['results'];

    $thisAction = $_POST['thisAction'];

    $message = "";

    switch ($thisAction)
    {
        case 'add':
        {
            global $wpdb; 
            $message .= $wpdb->query("INSERT INTO cases (compname,casename,imageurl,summary,results) VALUES (" . implode(",", array("'$compname'", "'$casename'", "'$imageurl'", "'$summary'", "'$results'")) . ")")
                       ? 'Successfully added case study ' . $casename . ' to the database.'
                       : 'Error occurred when trying to add case study to database: ' . $wpdb->last_error;
            break;
        }
        case 'delete':
        {
            global $wpdb; 
            $message .= $wpdb->query("DELETE FROM cases WHERE id=" . $id) 
                      ? 'Successfully deleted case study from the database.'
                      : 'Error occurred when trying to delete case study from database: ' . $wpdb->last_error;
            break;
        }
        case 'update':
        {
            global $wpdb;
            $message .= $wpdb->query("UPDATE cases SET compname='$compname',casename='$casename',imageurl='$imageurl',summary='$summary',results='$results' WHERE id=$id")
                      ? 'Successfully updated case study.'
                      : 'Error occurred when trying to update case study in database: ' . $wpdb->last_error;
            break;
        }
        default:
        {
            $message .= 'Didn\'t recognize action.'; 
            break;
        }
    }
    die($message); 
}
我在WordPress主题中构建了很多管理面板,我一直在重复使用这个过程。在测试期间我刚刚发现,当用户出于任何原因更新到相同的值时,
case'update'
块失败。但是自从
$wpdb->last_错误没有打印任何错误,当这种情况发生时,我不知道到底是什么问题


有人有解释吗?如何修复?

在表中添加一个名为
updated
的时间戳列,并在UPDATE语句中添加一个
,updated=now()
,以便为更新的行生成一个非零值。

您需要检查query()result==false。根据:

此函数返回一个整数值,指示为SELECT、INSERT、DELETE、UPDATE等操作影响/选择的行数。对于CREATE、ALTER、TRUNCATE和DROP SQL语句(影响整个表而不是特定行),此函数成功返回TRUE。如果遇到MySQL错误,函数将返回FALSE。请注意,由于行查询可能同时返回0和FALSE,因此在检查返回值时应小心。使用标识运算符(==)检查错误(例如,false==$result),以及是否有任何行受到影响(例如,0==$result)


很抱歉,您还没有发表评论的权限,因此必须以回复的形式发布。 贾斯汀的回答是正确的。 @平庸的网络开发人员至于您在评论中提出的问题。你必须使用
结果!==错误

在这种情况下,数据类型必须相同。

如果您更新到sql server中运行的sql相同的值,但0行受到影响,那么如果您检查受影响的行数……。@developerwjk啊,我明白了……那么检查查询是否失败将是
result!=false
——对吗?这将等同于您现在拥有的。您需要
结果!==false
我认为松散类型语言中的
=
的反面是
=
相反==
==