$wpdb->删除对我无效

时间:2021-02-15 作者:Bryan

我有一个从外部数据库将数据同步到WP的功能(见下文)。这是一个计划项目的列表。更新计划时,应删除旧数据。请参阅此代码段:

$wpdb->delete(
        $table,
        array(
          \'schedule_item_id\' => $item->id
        )
)
但这并没有发生。例如,如果我有一个项目;“A”;计划在星期二下午6点,然后我将其从外部数据库中删除,并将其替换为ietm“;“B”;同时安排。WordPress应删除项目;“A”;,但事实并非如此。我看到了这两项。”;“A”;和;“B”;在时间表上$wpdb->;删除不是删除它。我是不是做错了什么?以下是完整的功能:

function sync_schedule($scheduleItems) {
  global $wpdb;
  foreach($scheduleItems as $item) {
    if (!$item->show) { continue; }
    $table = $wpdb->prefix . \'schedule_items\';
    $existing_row = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table WHERE schedule_item_id=%d", $item->id));
    $show = get_show_post_by_id($item->show);
    if (!$show) { continue; }
    if (empty($existing_row) && $item->deleted == FALSE) {
      $wpdb->insert(
        $table,
            array(
                \'run_date_time\' => $item->runDateTime,
                \'show_id\' => $item->show,
            \'show_title\' => $show->post_title,
            \'show_post_id\' => $show->ID,
            \'channel_id\' => $item->channel,
            \'channel_post_id\' => 0,
            \'schedule_item_id\' => $item->id
            )
      );
    } else if ($item->deleted == FALSE){
      $wpdb->update(
        $table,
        array(
          \'run_date_time\' => $item->runDateTime,
          \'show_id\' => $item->show,
          \'show_title\' => $show->post_title,
          \'show_post_id\' => $show->ID,
          \'channel_id\' => $item->channel,
          \'channel_post_id\' => 99,
          \'schedule_item_id\' => $item->id
        ),
        array(
          \'schedule_item_id\' => $item->id
        )
      );
    } else {
      $wpdb->delete(
        $table,
        array(
          \'schedule_item_id\' => $item->id
        )
      );
    }
  }
}

1 个回复
SO网友:shanebp

从…起the codex page:如果省略,则$where中的所有值都将被视为字符串

因此,请尝试设置$where_format:

  $wpdb->delete(
    $table,
    array(
      \'schedule_item_id\' => $item->id
    ), 
    array( \'%d\' )
  );