Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PDO Update запрос


Автор: Axiom 25.4.2014, 23:54
Приветствую!

Столкнулся с такой проблемой. Отправляю update запрос в следующей функции:

Код

public function changeState($user_id, $state) {
        
        $dbHandle = Registry::get('db');
        
        $STH = $dbHandle->prepare("UPDATE users SET state = :state WHERE id = :user_id");
        
        $STH->bindParam(':state', $state);
        $STH->bindParam(':user_id', $user_id);
        
        $STH->execute();
        
        FB::log($state.' '.$STH->rowCount());
        
        return $STH->rowCount();
}


В определенный момент $state может принимать лишь два параметра: 1 или 0.
В таблице поле state имеет тип boolean.
Сам запрос проходит без проблем. И даже возвращает кол-во затронутых строк в таблице ($STH->rowCount()). Переменная $state также меняет своё значение как надо (1 или 0).
Но при этом само поле в таблице не изменяет своего значения. Как было 0, так и остается.
Не понимаю, почему так происходит. Подскажите, что может быть?

Автор: Aliance 28.4.2014, 10:11
Сделай первой строчкой $state = 1 и выполни функцию. Проверь результат. А теперь $state = 0 и повтори процедуру. Если все работает верно, значит смотри в сторону входного параметра. Если не верно - в сторону архитектуры структуры таблицы.

И в mysql boolean как такового нет, это просто unsigned tinyint(1), то есть в теории там можно хранить и 2, и 3...

Автор: Axiom 30.4.2014, 11:19
Прошу извинить, тема уже не актуальна. Проблема крылась на клиенте (js). Отправлялся тот же запрос, который долго не мог поймать.

Aliance
Всё-равно, спасибо за помощь!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)