Wpdb :: update не может обновить поле с именем 'active'

Я пытаюсь обновить поле с именем «active» в MySQL, и каждый раз, когда я делаю это, wpdb::update меняю свое значение на 0. Кто-нибудь знает почему? Ниже я привожу пример.

вот создать код для БД:

CREATE TABLE `wp_mdbaffiliate_applications` (
`id` INT(11) NOT NULL,
`active` CHAR(200) NOT NULL,
`user_id` INT(11) NOT NULL,
INDEX `id` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

вот как я создаю строку:

    public function __construct() {
        global $wpdb;
        $wpdb->show_errors = true;
        $this->wpdb = $wpdb;
    }
    $this->wpdb->insert('wp_mdbaffiliate_applications', array(
        'user_id'       => get_current_user_id(),
        'active'        => '0'
    ));

вот мой запрос на обновление:

    $status = $this->wpdb->update('wp_mdbaffiliate_applications', array(
        'active' => 'awaiting'
    ), array(
        'user_id' => get_current_user_id()
    ));
    $mySpecificCase = array(
        $this->wpdb->last_query,
        $this->wpdb->last_result,
        $this->wpdb->last_error,
    );
    var_dump($mySpecificCase);
    var_dump($status);

вот что он всегда возвращает (независимо от того, является ли значение «ожидающим» или «зонтичным»):

array(3) { [0]=> string(78) "UPDATE `wp_mdbaffiliate_applications` SET `active` = 0 WHERE `user_id` = 33584" [1]=> array(0) { } [2]=> string(0) "" }
int(0)

и если я изменю active на что-нибудь еще (например, статус), он сработает и вернется:

array(3) { [0]=> string(87) "UPDATE `wp_mdbaffiliate_applications` SET `status` = 'awaiting' WHERE `user_id` = 33584" [1]=> array(0) { } [2]=> string(0) "" } 
int(1)

Когда я использую это:

$this->wpdb->query("UPDATE `wp_mdbaffiliate_applications` SET `active` = 0 WHERE `user_id` = 33584")

работает нормально.

$ post_id = get_current_user_id (); $ wpdb-> query ("UPDATE wp_mdbaffiliate_applications SET active = 'awaiting' WHERE user_id = '$ post_id'");

Vaibhav Kumar 21.05.2018 13:06

попробуйте это также $ post_id = get_current_user_id (); $ wpdb-> query ($ wpdb-> prepare ("UPDATE wp_mdbaffiliate_applications SET active = 'awaiting' WHERE user_id = '$ post_id'"));

Vaibhav Kumar 21.05.2018 13:08

Я сказал, что работает :) Вы, наверное, меня неправильно поняли. У меня нет проблем с этим (я сменил active на status, и все в порядке), просто подумал, что это интересно. И мне любопытно, почему active не работал

Witold Tkaczyk 21.05.2018 13:10

хорошо, плохо, я не прочитал весь вопрос.

Vaibhav Kumar 21.05.2018 13:12

@TechnoDeviser ваш пример wpdb::prepare должен выглядеть так: $wpdb->query( $wpdb->prepare("UPDATE wp_mdbaffiliate_applications SET active = 'awaiting' WHERE user_id =%d", array( $post_id )));

Witold Tkaczyk 21.05.2018 13:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
54
0

Другие вопросы по теме