Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pdo zwraca false mimo że zapytanie jest poprawne
jarmiar
post
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


a po co Ci apostrofy?
Go to the top of the page
+Quote Post
jarmiar
post
Post #3





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


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


bo porównuje stringi
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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ź.
Go to the top of the page
+Quote Post
jarmiar
post
Post #5





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


Jest tam string Łódź, sprawdzałem wcześniej
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


W takim razie, jest to niemożliwe.
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
jarmiar
post
Post #8





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


  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 ( )
Go to the top of the page
+Quote Post
Damonsson
post
Post #9





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Hmmm jak Łódź może mieć długość 9 znaków? (IMG:style_emoticons/default/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.

Ten post edytował Damonsson 8.07.2013, 12:15:25
Go to the top of the page
+Quote Post
jarmiar
post
Post #10





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
buliq
post
Post #11





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


A znasz trim?
Go to the top of the page
+Quote Post
Damonsson
post
Post #12





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


WoW, jestem z siebie dumny, bez szklanej kuli, rozwiązać taką zagadkę (IMG:style_emoticons/default/czarodziej.gif)

A co do Ciebie, to walnij sobie
  1. trim($city)
przed wysłaniem zapytania i voila.
Go to the top of the page
+Quote Post
jarmiar
post
Post #13





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

Ostrzeżenie: (0%)
-----


znam, tylko co w przypadku Stalowa Wola ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Damonsson
post
Post #14





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
buliq
post
Post #16





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


@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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 10:48