PHP PDO - bindValue PARAM_BOOL в виде строки - PullRequest
0 голосов
/ 02 апреля 2012

Я волнуюсь здесь и не могу понять, что не так.Я довольно новичок в PDO, но в моем коде все работает, кроме логических значений, которые отправляются в виде строк.

Мой код (упрощенный):

$sql = 'SELECT * FROM pages WHERE clean_url_slo = :clean_url_slo AND published = :published LIMIT 1';

$clean_url_slo = 'home';
$published = true;

Затем я готовлю вещи и выполняюэто так (упрощенно):

$stmt = $db->prepare($sql);
$stmt->bindValue(':clean_url_slo',$clean_url_slo,PDO::PARAM_STR);
$stmt->bindValue(':published',$published,PDO::PARAM_BOOL);
$stmt->execute();

И вот что происходит с mysql (из журнала mysql - полученный запрос mysql):

91 Query    SELECT * FROM pages WHERE 1=1 AND clean_url_slo='domov' AND published='1' ORDER BY id desc LIMIT 1

Как видите,опубликовано целое число - так всегда верно, что не в порядке.Почему, если я объявляю его как логическое значение?

, используя:

WAMP SERVER Версия PHP: 5.3.9 Mysql: 5.5.20

Большое спасибо за вашпомощь ..

1 Ответ

2 голосов
/ 02 апреля 2012

MySQL на самом деле не имеет логического типа данных, ключевое слово BOOLEAN является просто псевдонимом TINYINT (1).
Вы должны работать, у него есть число, где 1 = true и 0 = false.Проверьте Типы данных MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...