无法更新自定义数据库表行

时间:2014-05-02 作者:Robbert

我试图通过以下方式更新自定义数据库表中的行$wpdb->update();. 在我看来,我的代码是正确的,但由于某种原因,我的数据库行没有更新。

有人能帮我吗?

我想更新wp\\u mollie\\u transactions表中事务的状态,其中transaction_id 等于$order_id, 我从我的支付提供商那里收到的。

(我偏离了航线$wpdb 此文件中的全局)

// Update database
    $wpdb->update( $wpdb->prefix . \'mollie_transactions\',
        array(
            \'status\'    => $payment->status
        ),
        array( 
            \'transaction_id\'    => $order_id
        )
    );

1 个回复
最合适的回答,由SO网友:Paul G. 整理而成

在尝试写入数据库之前,always 验证您输入的值:

$fValid = true;
if ( !isset( $payment->status ) ) {
    echo \'Error: Payment status is not set\';
    $fValid = false;
}
if ( !isset( $order_id )  ) {
    echo \'Error: Order ID is not set\';
    $fValid = false;
}

if ( $fValid ) {
    // Update database
    $fSuccess = $wpdb->update( $wpdb->prefix . \'mollie_transactions\',
        array(
            \'status\'            => $payment->status
        ),
        array( 
            \'transaction_id\'    => $order_id
        )
    );

    echo sprintf( \'Update %s where Payment Status was %s and Transaction ID was %s\', $fSuccess? \'Succeeded\':\'Failed\', $payment->status, $order_id );
}
干杯。

结束

相关推荐

$wpdb->Prepare逃逸太多了吗?如何正确使用它?

我对$wpdb->prepare感到非常困惑。我想用它来清理用户输入,但结果是它破坏了查询。我无法想象它是如何工作的,但我无法找出我做错了什么。请耐心点,给我指出解决方案。下面的代码只是一个简单的示例,用于演示,目的是明确出现了什么问题以及如何出错。Later there will be user input 正在馈送此查询。当我省略了“准备并使用sprintf”时,这个示例很有效:global $wpdb; $mydb = new \\wpdb( \"My_Login\" ,\"My_PW