пустое значение вставлено, если параметр имеет значение false

Я пытаюсь вставить значение 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, что неверно.

5
задан donk 20 January 2012 в 08:58
поделиться