Я пытаюсь вставить значение 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:
Я нашел сообщение об ошибке здесь 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, что не правильно.