Autor | Zpráva | ||
---|---|---|---|
joshi Profil * |
#1 · Zasláno: 4. 6. 2009, 21:28:17
Ahoj, mám takýto kód
foreach($_POST['nieco'] as $nieco){ $query = "SELECT * FROM tabulka WHERE id=".$nieco; $result = mysql_query($query, $conn) or die("Nepodarilo sa vybrat riadok! ".mysql_error()); ... Tento kód však veľmi zaťažuje databázu a je pomalý pri veľkom počte položiek v poli. Výsledky SELECTU zapisujem do polí formulára a tlačítko Submit, ktoré je na jeho konci sa vypisuje na začiatku (myslím, že preto lebo používam ob_start() a ob_end_flush()). Ako by ste riešili situáciu, aby SELECT nebol v cykle a nevyberal po jednom riadku ale zároveň vybral všetky riadky, ktoré majú ID zhodné s tými v poli $_POST[]? Ďakujem |
||
TomášK Profil |
#2 · Zasláno: 4. 6. 2009, 21:47:23
Nejprve si uložíme požadované hodnoty:
$values = implode($_POST['nieco'], ','); a dotaz pak bude vypadat: SELECT * FROM tabulka WHERE id IN ($values) Ještě by to mělo být doplněné o escapování těch hodnot - ochraně proti sql injection. |
||
joshi Profil * |
#3 · Zasláno: 4. 6. 2009, 21:48:48
Vďaka, toto ma nenapadlo.
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0