Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2015
Откуда: Минск, Беларусь
Помог: 0 раз(а)
|
Доброй ночи, хабровча... Пхпсушники!
Возникла одна странная проблема, и я ума не приложу, что не так...
CODE ( SQL):
скопировать код в буфер обмена
CREATE TABLE `logs` ( `type` tinyint(1) NOT NULL COMMENT '0 - лог авторизации, 1 лог банов, 2 - лог действий', `ip` varchar(23) DEFAULT NULL, `status` tinyint(1) DEFAULT NULL COMMENT '0 - ошибка, 1 - успех, 2 - автомат после регистрации, 3 - автомат после смены имейла', `email` varchar(50) DEFAULT NULL, `password` varchar(40) DEFAULT NULL, `ban_action` tinyint(1) DEFAULT NULL COMMENT '0 - забанен, 1 - разбанен', `user_target_id` int(11) NOT NULL, `till` int(11) DEFAULT NULL, `isPerm` tinyint(1) DEFAULT NULL, `user_init_id` int(11) DEFAULT NULL, `text` text, `date` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
Работаю через PDO, всё стандартно: $db = new PDO(и далее по тексту);
Проблемная функция:PHP:
скопировать код в буфер обмена
function log_ban($id, $reason, $till=null, $isPerm=null){ global $db; $ban_action = (!is_null($till)) ? 0 : 1; //0 - забанен, 1 - разбанен $db->exec('INSERT INTO `logs` (`type`, `ban_action`, `user_target_id`, `till`, `isPerm`, `user_init_id`, `text`, `date`) VALUES (1, '.$ban_action.', '.$id.', '.$till.', '.$_SESSION['id'].', "'.$reason.'", '.time().')'); }
Запрос может быть, например, таким:CODE ( SQL):
скопировать код в буфер обмена
INSERT INTO `logs` (`type`, `ban_action`, `user_target_id`, `till`, `isPerm`, `user_init_id`, `text`, `date`) VALUES (1, 0, 3, 1486682564, 0, 1, "Безо всякой причины", 1484004164)
И проблема в том, что этот запрос абсолютно корректен. Он выполняется в любом MySQL-менеджере (я, например, юзаю HeidiSQL). Affected rows: 1 Найденные строки: 0 Предупреждения: 0 Длительность 1 query: 0,172 sec.
Но при вызове самой функции этот запрос не выполняется. Не, может он и выполняется, но ничего не происходит, а сам запрос возвращает (bool) false.
Подскажите, пожалуйста, в чём дело?
P.S. Да, датувремя я храню таймштампом в поле INT, ибо так при выборке получаю тот же таймштамп, а не дату 'YmdHis', которую нужно парсить. Если есть варианты лучше - с радостью посмотрю
(Добавление)
Всё, нашёл: количество полей и вставляемых значений не совпадало ("`isPerm`" есть, а "'.$isPerm.', " - нет). Удивительно, почему не выдавалась ошибка...
|