Ludia, potrebujem help s tymto:
mam tabulku s nazvom TAB1, v nej dva stlpce s nazvami ID a TEXT.
ak zapisem: select * from TAB1 where ID like '%hladane_ID%', pricom
$hladane_ID ma len jednu hodnotu, napr 1 mi vypise text s ID 1.
Problem nastane, ak chcem vypisat naraz viac riadkov s roznymi ID, vzdy mi vrati prazdne riadky a neviem preco. :-/
To je jasne. LIKE funguje trochu jinak. Nevypise ti to vsecky sloupce, kterych ID se vyskytuje v tom retezci. Nevim, jak do promenne $hledane_ID zadavas tech vic ruznych ID, ale kdyz treba napises ...ID LIKE '%1,3,5%'; tak ti to nenajde vsechny radky s ID=1, ID=3 a ID=5. Najde ti to radky, kterych ID obsahuje retezec '1,3,5', vcetne tech carek a buhvi ceho jeste, takze to ve vetsine pripadu nenajde nic, protoze ID se v tomto tvaru vetsinou nepouziva.
Pouzivat na vyber podle ID strukturu s LIKE je prinejmensim nestastne. Uz jenom proto, ze kdyz tam budes mit vic zaznamu s ruznymi ID, tak struktura "... ID LIKE '%1%';", ti najde vsechny radky, kterych ID obsahuje jednicku, tudiz nejen 1, ale i napriklad 10, 11, 15, 101, 2314, atd.... coz urcite nechces.
Takze jeden z napadu by byl treba:
Pokud mas ty ID, ktere chces vybrat, treba v poli (pokud ne, tak je tam urcite muzes nejak dostat), tak muzes nejdriv ten dotaz "poskladat".
Tzn.:
$dotaz = "SELECT * FROM TAB1 WHERE 1 ";
foreach($pole AS $hodnota_id) {
$dotaz .= " AND ID=$hodnota_id";
}
$dotaz .= ";";
a pak jenom zavolas MySQL_Query($dotaz);
a melo by ti to vyhodit to, co chces.