Autor Zpráva
joshi
Profil *
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
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 *
Vďaka, toto ma nenapadlo.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0