![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wiatm!
Za pomocą funkcji foreach, otrzymuję tablice (niewiem ilu elementową) i mam takie pytanko jak pobrać z bazy danych te wiersze w których $id jest równa wartością z tablicy? Np. funkcja zwróci mi tablicę Więc chcępobrać z bazy wiersze w których
Jak ma poprawnie być zbudowana taka pentla? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 3 Dołączył: 2.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Problem jest w implode oraz w zapytaniu: 1. Kiedy polaczyles implode'em tablice podales jako separator przecinek, czyli wynik: 1,2,3,4 i niby ok. 2. Ale w zapytaniu podstawiles zmienna, obejmujac ja ciapkami: ('$v_zmienna') Czyli zapytanie przyjelo postac: SELECT ... FROM .... WHERE `kj` IN ('1,2,3,4') a wiec zamiast podac po przecinku kolejna wartosc dla IN'a , podales jeden string zawierajacy liczby po przecinku. Jako ze MySQL jest mocno liberalny, obcial sobie pierwsza wartosc z listy (jedynke) i z niej skorzystal (taki jego sposob na konwersje do liczby ;-)). Wiec dostales pierwszy wiersz z listy zamiast wszystkie cztery. Inny system DB - np. Postgres krzyknal by Ci blad, ze podales napis tam gdzie sie spodziewa liczby (kolumna kj to integer) -i bylo by jasne - a mysql czasami przeholowuje z user friendly - ale to juz inna para kaloszy ;-)). Rozwiazanie: $comma_separated = implode("','", $chks); - zwroc uwage na apostrofy przed i po przecinku. Czyli zapytanie przyjmie postac: SELECT ... FROM .... WHERE `kj` IN ('1','2','3','4') - i powinno byc ok ;-) Podrawiam serdecznie, Kacper ============================================ Szkolenia PHP, Warszawa http://www.AplikacjeInternetowe.pl |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 19:08 |