使用条件数组更新WPDB

时间:2018-09-20 作者:Hassan Alvi

Issue: 我需要按照与下面完全相同的格式使用update函数,问题在于id i、 e.[其中(id=1或id=2)和状态=真

$wpdb->update(
    $tbl_request_log,
    array(
        \'status\'    =>  false,
    ), 
    array(
        \'id\'        =>  array($req1_id, $req2_id),
        \'status\'    =>  true,
    )
);

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

这是不可能的$wpdb->update(). 如果您检查source code, 您将看到这些行(第2150-2161行),无法获得OR 其中:

foreach ( $where as $field => $value ) {
    if ( is_null( $value[\'value\'] ) ) {
        $conditions[] = "`$field` IS NULL";
        continue;
    }

    $conditions[] = "`$field` = " . $value[\'format\'];
    $values[] = $value[\'value\'];
}

$fields = implode( \', \', $fields );
$conditions = implode( \' AND \', $conditions );
<小时>However, 您可以使用编写自己的查询prepare()

$wpdb->query($wpdb->prepare(
    "UPDATE `$tbl_request_log` SET `status` = false WHERE (`id` = %d OR `id` = %d) AND `status` = true",
    $req1_id,
    $req2_id
));

结束

相关推荐

使用$wpdb更新表的所有行

如何使用$wpdb更新表的所有行?我试过这个,但不起作用:$wpdb->update( \'wp_comments, array( \'comment_karma\' => \'123\' ), null ); 还有这个$wpdb->update( \'wp_comments, array( \'comment_karma\' => \'123\' ), array() ); 那么如何做到这一点呢?提前感谢!