Запрос $wpdb update в плагине обновляет только один столбец
30 янв. 2017 г., 16:25:21
Просмотры: 19K
Голосов: 0
Я выполняю обновление из админки WooCommerce, редактируя детали заказа. У меня две проблемы:
- Обновляется только столбец 'download-count'.
- Не получается перехватить SQL ошибки.
Однако, когда я использую тот же запрос в отдельном PHP файле, он работает корректно. В чем ошибка и как можно получить SQL ошибки или хотя бы увидеть отправленный запрос?
$table = $wpdb->prefix . 'woocommerce_downloadable_product_permissions';
$expiry_date = date("Y-m-d", 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("Y-m-d", 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);
Комментарии
Все ответы на вопрос
1
0
Мне пришлось использовать два отдельных запроса. Синтаксис $wpdb->update не может работать с вычислениями на основе существующего значения. Но для остальных двух полей он работает. Вот так:
$table = $wpdb->prefix . 'woocommerce_downloadable_product_permissions';
$expiry_date = date("Y-m-d", 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' ) );

hal
35
21 февр. 2017 г. 14:42:57
Похожие вопросы