/ / PHP PDO - bindValue PARAM_BOOL jako string - php, mysql, pdo

PHP PDO - bindValue PARAM_BOOL jako string - php, mysql, pdo

Jestem przerażony i nie mogę się domyślić, co jest nie tak .. Jestem całkiem nowy w PDO, ale wszystko działa w moim kodzie, z wyjątkiem bajtów, które są wysyłane jako łańcuchy.

Mój kod (uproszczony):

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

$clean_url_slo = "home";
$published = true;

Potem przygotowuję rzeczy i wykonuję je w ten sposób (uproszczone):

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

A oto, co przychodzi do mysql (z dziennika mysql - otrzymane zapytanie mysql):

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

Jak widać, opublikowany jest liczbą całkowitą - więc zawsze jest to prawda, co nie jest poprawne. Dlaczego tak jest, jeśli deklaruję to jako boolean?

za pomocą:

SERWER WAMP Wersja PHP: 5.3.9 Mysql: 5.5.20

Wielkie dzięki za Twoją pomoc..

Odpowiedzi:

2 dla odpowiedzi № 1

MySQL tak naprawdę nie ma boolowskiego typu danych, słowo kluczowe BOOLEAN jest tylko aliasem TINYINT (1).
Musisz pracować, że ma numer gdzie 1 = prawda i 0 = fałsz. Czek Typy danych MySQL