How to pass NULL in where array for $wpdb->update

how to get results of a row with NULL element?
I have to update the row which contains only the post_id and the repeat value, ‘start’ and ‘end’ should be NULL

mysql table screenshot: http://i.imgur.com/l27is.png

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

I get this error:

WordPress database error: [] UPDATE wp_MW_3_schedule SET rpt = ‘monday’ WHERE post_id = 357 AND start = ” AND end = ”

Related posts

Leave a Reply

3 comments

  1. My simple and quick solution is the use of a normal $wpdb->query() function:

    $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 ) );
    
  2. According to this ticket’s comment, NULL format is now working correctly and you can write your query as:

    $wpdb->update(
        $schedule_table, 
        array('rpt' => $event_tag), 
        array('post_id' => $post_ID, 'start' => NULL, 'end' => NULL), 
        array('%s'), 
        array('%d', NULL, NULL) 
    );
    
  3. NULL is a php construct with special meaning, you should have probably used “NULL” instead.

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