konstrukce for ve volani SELECT

Honza Pazdziora adelton na informatics.muni.cz
Středa Prosinec 15 18:56:46 CET 1999


On Wed, Dec 15, 1999 at 05:42:39PM +0100, mario wrote:
> > > $res = mysql_db_query("databaze","SELECT * FROM tabulka WHERE xxxxxxxxxx");
> > > misto tech xxxxxxxxxx je nejaka konstrukce for.
> > 
> > Jaka konstrukce for?
> 
> sem to blbe napsal :-/ . cyklus for . tedy nepriklad
> 
> for ($i = 0; $i < $count; $i++) nazev = '$nazev[$i]';

Aha. Tak v tom pripade tam ale nemuze byt konstrukce for. Jestli tedy
dobre chytam, co teda, tak chcete selectnout hvezdicku z tabulky
tabulka kde nazev je jeden z pole @nazev. Tak to v MySQL napisete
pomoci zretezeni OR podminek, nebo lepe (v novejsich verzi) pomoci
operatoru IN, kteremu date seznam tech hodnot, ve kterych chcete
hledat. V Perlu bych to tedy zakodoval

	my $OTAZNIKY = join ',', ('?') x @nazev;
	my $res = $dbh->selectall_arrayref(qq!
		SELECT * FROM tabulka WHERE
		nazev IN ( $OTAZNIKY )
		!, {}, @nazev);

a mel bych v $res arrayref vsech radku. Mam takove tuseni, ze
v PHP bindovane parametry nejsou, cili budete muset ty hodnoty nacpat
primo do toho SQL dotazu, ale protoze se to tak v PHP dela pokazde,
tak to asi ani nevadi.

Doufam, ze to pomuze,

------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
   .project: Perl, DBI, Oracle, MySQL, auth. WWW servers, MTB, Spain.
------------------------------------------------------------------------


Další informace o konferenci Test