Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pdo zwraca false mimo że zapytanie jest poprawne
Forum PHP.pl > Forum > PHP
jarmiar
mam taki dziwny problem z pdo, zapytanie jest poprawne i w phpmyadminie zwraca mi odpowiednia ilosc rekordow, niestety pdo zwraca false

jak podstawiam zmienną:
  1. $data = $pdo -> query ( "select id, name from cities where lower(name)=lower('$city') order by id asc limit 1" ) -> fetch ( );

(mimo że w zmiennej jest wartość string "Łódź") zwraca false

ale tutaj już:

  1. $data = $pdo -> query ( "select id, name from cities where lower(name)=lower('Łódź') order by id asc limit 1" ) -> fetch ( );


działa jak należy

co sie dzieje?
Damonsson
a po co Ci apostrofy?
jarmiar
Cytat(Damonsson @ 8.07.2013, 12:44:34 ) *
a po co Ci apostrofy?


bo porównuje stringi
Damonsson
Fakt, zapomniałem, że w sumie można tak też konstruować zapytania PDO, bez bindowania. Daj przed tym var_dump($city), pewnie nie ma tam stringu Łódź.
jarmiar
Jest tam string Łódź, sprawdzałem wcześniej
Damonsson
W takim razie, jest to niemożliwe.
phpion
Sprawdź jakąś nazwę miejscowości bez polskich znaków - może w tym problem.

PS: Używanie PDO bez bindowania nadal naraża Cię na ataki SQL injection.
jarmiar
  1. string(9) "Łódź" select id, name from cities where lower(name)=lower('Łódź') order by id asc limit 1array(3) { [0]=> string(5) "00000" [1]=> NULL [2]=> NULL } bool(false)


pierwszy dump to zmiennej $city, drugi to zapytanie, trzeci dump to errorInfo() z Pdo, 4 dump to wynik $pdo -> query ( ) -> fetch ( )
Damonsson
Hmmm jak Łódź może mieć długość 9 znaków? wink.gif

Wywal (pewnie) spację, przed i po stringu i nie oszukuj na przyszłość, że var_dump zwraca Ci to samo.

Albo rzeczywiście masz coś z kodowaniem znaków nie tak? Sprawdź dla normalnego słowa, bez polskich akcentów.
jarmiar
wcześniej w kodzie bawie sie tak:

  1. if ( !empty ( $city ) )
  2. {
  3. if ( $city[0] == ' ' ) $city[0] = '';
  4. $l = strlen ( $city );
  5. if ( $city[$l-1] == ' ' ) $city[$l-1] = '';
  6. }


owszem byly spacje przed i po, ale nie sądziłem, że to taki babol bedzie i co tu teraz zrobic skoro takie rzeczy sie dzieja
buliq
A znasz trim?
Damonsson
WoW, jestem z siebie dumny, bez szklanej kuli, rozwiązać taką zagadkę czarodziej.gif

A co do Ciebie, to walnij sobie
  1. trim($city)
przed wysłaniem zapytania i voila.
jarmiar
znam, tylko co w przypadku Stalowa Wola ? smile.gif
Damonsson
Tak trudno sprawdzić, że nic? Jak daje mojej 6 letniej kuzynce piłkę i mówię jej że się odbija od podłogi, to zanim mi ją odda i powie, że się nie odbija, chociaż raz próbuje ją odbić od podłogi. Trochę od niej odstajesz, ale pracuj nad sobą, może kiedyś dorównasz.
nospor
Cytat
Trochę od niej odstajesz, ale pracuj nad sobą, może kiedyś dorównasz.
Ach, jak mi brakuje na forum LIKEow, bo wlasnie bys dostal smile.gif
buliq
@topic nic się nie stanie, bo trim usunie tylko na początku i na końcu białe znaki
@off mi też jej tutaj brakuje smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.