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 № 1MySQL 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