$ wpdb update query в плагине, обновляющий только один столбец

Я делаю обновление от администратора woocommerce, редактирую информацию о заказе. У меня две проблемы:

  1. Обновляется только столбец «загрузка-счет».
  2. Я не могу уловить ошибки sql.

Однако при использовании одного и того же запроса в автономном php-файле он отлично работает. Что не так, и как я могу получить ошибки sql или, по крайней мере, отправленный запрос?

$table = $wpdb->prefix . 'woocommerce_downloadable_product_permissions'; $expiry_date = date("Ymd", strtotime("+ 30 days")); $expiry_time = $expiry_date . ' 00:00:10'; $wpdb->query("UPDATE `$table` SET `downloads_remaining` = '1', `access_expires` = '$expiry_time', `download_count` = (`download_count` + 1) WHERE `order_id` = '$post_id'"); 

Вот «автономная версия php, которая работает:

 $link = mysqli_connect($servername, $username, $password, $db); $post_id = '219'; if (!$link) { exit; } $expiry_date = date("Ymd", strtotime("+ 30 days")); $expiry_time = $expiry_date . ' 00:00:00'; $table = 'hkmw_woocommerce_downloadable_product_permissions'; $query = "UPDATE `$table` SET `downloads_remaining` = '1', `access_expires` = '$expiry_time', `download_count` = (`download_count` + 1) WHERE `order_id` = '$post_id';"; if (!mysqli_query($link,$query)) { printf("Errormessage: %s\n", mysqli_error($link)); } mysqli_close($link); 

Solutions Collecting From Web of "$ wpdb update query в плагине, обновляющий только один столбец"

Мне пришлось использовать два отдельных запроса. Синтаксис $ wpdb-> update не может рассчитывать на основе существующего значения. Но для двух других полей это работает. Ну вот так:

 $table = $wpdb->prefix . 'woocommerce_downloadable_product_permissions'; $expiry_date = date("Ymd", strtotime("+ 30 days")); $expiry_time = $expiry_date . ' 00:00:00'; $wpdb->query("UPDATE $table SET download_count = (download_count + 1) WHERE order_id = '$post_id'"); $wpdb->update( $table, array( 'downloads_remaining' => '1', 'access_expires' => $expiry_time), array( 'order_id' => $post_id ), array( '%s', '%s' ), array( '%d' ) );