Я пытаюсь вставить значение FALSE в базу данных, но безуспешно - вставляется пустая строка. Столбец - varchar. Если я вставляю значение ИСТИНА, оно вставляет 1.
Я использую mysql, PDO и php.
Я также использую класс DB, который ничего не делает с запросом, кроме его подготовки и выполнения с использованием подготовленных операторов PDO.
Имеется в виду очень простой запрос:
$sql = 'INSERT INTO api_logs_values (value) VALUES (?)';
а затем:
$this->_db->query($sql, array(FALSE));
есть идеи, что происходит?
EDIT:
Добавлена структура таблицы:
api_logs_values | CREATE TABLE `api_logs_values` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`log_id` int(10) unsigned NOT NULL,
`name` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `log_id` (`log_id`,`name`)
ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8
EDIT2:
I ' Я нашел отчет об этой ошибке здесь https://bugs.php.net/bug.php?id=33876 , но, похоже, нет подходящего, приятного решения для этого. За исключением, возможно, установки атрибута PDO_PARAM_BOOL.
EDIT3:
Я обнаружил, что класс DB, который я использую, не связывает параметры отдельно, но выполняет ($ param), и смотрю здесь http://php.net/ manual / en / pdostatement.execute.php , он обрабатывает все параметры как PDO :: PARAM_STR, что неверно.