Я пытаюсь обновить поле с именем «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 ($ wpdb-> prepare ("UPDATE wp_mdbaffiliate_applications SET active = 'awaiting' WHERE user_id = '$ post_id'"));
Я сказал, что работает :) Вы, наверное, меня неправильно поняли. У меня нет проблем с этим (я сменил active на status, и все в порядке), просто подумал, что это интересно. И мне любопытно, почему active не работал
хорошо, плохо, я не прочитал весь вопрос.
@TechnoDeviser ваш пример wpdb::prepare должен выглядеть так: $wpdb->query( $wpdb->prepare("UPDATE wp_mdbaffiliate_applications SET active = 'awaiting' WHERE user_id =%d", array( $post_id )));






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