| 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: 16 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0