如何在WHERE数组中为$wpdb->更新传递NULL

时间:2012-12-20 作者:Paul Geisler

如何获取元素为NULL的行的结果?我必须更新只包含post\\u id和repeat值的行,“start”和“end”应为NULL

mysql表截图:http://i.imgur.com/l27is.png

$wpdb->update( $schedule_table, array( \'rpt\' => $event_tag ), array( \'post_id\' => $post_ID, \'start\' => NULL, \'end\' => NULL ), array( \'%s\' ) );
$wpdb->print_error();
我收到以下错误:

WordPress数据库错误:[]更新wp_MW_3_schedule 设置rpt = \'周一在哪里post_id = 357和start = \'\' 和end = \'\'

3 个回复
最合适的回答,由SO网友:Paul Geisler 整理而成

我的简单而快速的解决方案是使用一个普通的$wpdb->query()函数:

$wpdb->query( $wpdb->prepare("UPDATE $schedule_table SET rpt = %s WHERE post_id = %d AND start IS NULL AND end IS NULL", $event_tag, $post_ID ) );

SO网友:Kos

根据this ticket\'s comment, NULL 格式现在工作正常,您可以将查询编写为:

$wpdb->update(
    $schedule_table, 
    array(\'rpt\' => $event_tag), 
    array(\'post_id\' => $post_ID, \'start\' => NULL, \'end\' => NULL), 
    array(\'%s\'), 
    array(\'%d\', NULL, NULL) 
);

SO网友:Mark Kaplun

NULL是一个具有特殊含义的php构造,您可能应该使用“NULL”来代替。

$wpdb->update( $schedule_table, array( \'rpt\' => $event_tag ), array( \'post_id\' => $post_ID, \'start\' => \'NULL\', \'end\' => \'NULL\' ), array( \'%s\' ) );

结束

相关推荐

修改$wpdb返回的数据结构

通过$wpdb修改SQL输出的多维数组的结构我需要的输出$wpdb 通过在foreach. 然而,对于性能问题,我正试图避免同样的问题。我有两个自定义表:items - item_id - item_name sub_items - sub_item_id - item_id - sub_item_name 我正在运行的查询:$items_tbl = $wpdb->prefix . \'items\'; $sub_items