Portál AbcLinuxu, 21. července 2025 10:44


Dotaz: PHP - Jak na zápis sql dotazu z array

19.10.2011 13:39 Dědek
PHP - Jak na zápis sql dotazu z array
Přečteno: 578×
Odpovědět | Admin
Ahoj všem. poraí někdo jak načíst data? Mám funkci result_id() která vrací 26,46,47,48 ale nevím jak napsat sql dotaz a while. Zkoušel jsem to takto.
$sql = mysql_query("SELECT * FROM rato WHERE cat IN ('".result($id)."')");

     while($row = mysql_fetch_assoc($sql)) {
          
          echo $row['id'] . "</br>";

     }
ale vypisuje se jen jeden řádek :( Díky za pomoc

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Salamek avatar 19.10.2011 13:54 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Odpovědět | | Sbalit | Link | Blokovat | Admin
$sql = 'SELECT * FROM rato WHERE cat IN ('.result($id).') ';
$result = mysql_query($sql);
//prepraseni do neceho pouzitelnejsiho
while(($resultArray[] = mysql_fetch_assoc($result)) || array_pop($resultArray)); 

foreach($resultArray AS $k=>$v)
{
   echo $v['id'].'
'."\n"; }
Ale nejlepsi by bylo kdyby jsi nam rekl co presne zamyslis provest, treba by jsme ti navrhli lepsi reseni (ze strany SQL ci PHP)
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
19.10.2011 15:16 aaa
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nahrad
$sql = mysql_query("SELECT * FROM rato WHERE cat IN ('".result($id)."')");
za
$sql = mysql_query("SELECT * FROM rato WHERE cat IN (".result($id).")");
20.10.2011 17:32 Dědek
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
požadované id z pole: 26,46,47,481
to co napsal Salamek vypisuje radky s id: 1,2,1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,2670

to co napsal blondak vypisuje radky s id: 2,3,4,5,2670
ani jedna možnost není dobře :( Proč?
AraxoN avatar 20.10.2011 19:01 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Preto, lebo nikto za Teba nebude robiť Tvoju prácu.
20.10.2011 19:35 Kit
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Je to proto, že už tvé zadání je zřejmě špatně. Zkus zapřemýšlet, jak jsi přišel k seznamu požadovaných ID. Zřejmě už přeměna seznamu těchto ID na řetězec byla nesmyslná. Tedy v případě, že ten seznam byl získán ze stejné databáze.

Zkus myšlenkově couvnout a napiš nám, jakým postupem jsi přišel k seznamu 26,46,47,481. Je možné, že se celá úloha dá vyřešit jediným SQL dotazem bez takového mezivýpočtu.
Salamek avatar 27.10.2011 10:07 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
napis nam presne co zamyslis, je mozne ze by tohle cele vyreseli jeden JOIN
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Josef Kufner avatar 29.10.2011 17:34 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
To není správně -- Je to náchylné na SQL Injection.

Správně je, aby funkce result() vrátila pole a pak udělat něco jako toto:
$sql = mysql_query("SELECT * FROM rato WHERE cat IN (\"".join('","', array_map('mysql_real_escape', result($id))."\")");
Ale ještě lepší je použít join nebo subselect (pokud to je možné).
Hello world ! Segmentation fault (core dumped)
Josef Kufner avatar 29.10.2011 17:35 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Příště si vypiš sestavený SQL dotaz, tak jak ho předáš do mysql_query(). Sám uvidíš, kde je chyba.
Hello world ! Segmentation fault (core dumped)
27.10.2011 09:22 neasi
Rozbalit Rozbalit vše Re: PHP - Jak na zápis sql dotazu z array
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neviem ako to je s assoc ale mne array funguje takto $sql = mysql_query("SELECT * FROM rato WHERE cat IN ('".result($id)."')");

while($row = mysql_fetch_array($sql)) { echo $row['id'] . "br";

}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.