Jak se dostat k vystupu SQL dotazu?
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Září 14 15:36:25 MEST 1999
>
> problem prvni:
> pristupuji k databazi pres modul DBD::XBase.
> Po provedeni SQL dotazu SELECT se naplni asociativni pole dbRows:
>
> @dbRows = $dataObject->fetchall_arrayref();
^^^ ^^^^^
Funkce *arraref vraci referenci na pole, coz je skalar, nema tedy
smysl prirazovat do pole.
> a pak uz lze vysledek dotazu vyhodit do tabulky:
>
> foreach $rowReference (@dbRows)
> {
> foreach $columnReference (@$rowReference)
> {
> print qq!<TR>!;
> foreach $column (@$columnReference)
> {
Nazvy tech promennych mate matouci. Je to
$db_rows = $dataObject->fetchall_arrayref('neco');
for $row_ref (@$db_rows) {
for $column ( @$row_ref ) {
print $column;
}
}
> takto jsem to opsal z nejakeho prikladu a chodi to.
>
> Muj problem je v tom, ze se potrebuji dostat ke konkretnim hodnotam,
> driv nez zacnu vytvaret vystup. Jinymi slovy, jak se dostanu napr. k
> hodnote 5. sloupce ve tretim zaznamu? Zkousel jsem vsechno mozny,
$db_rows->[2][4];
> napr. $columnReference[4] nebo $(@columnReference)[4] ale vzdycky
Oba tyhle zapisy predpokladaji, ze existuje pole @columnReference, coz
neni pravda. Cili pokud pouzivate use strict, tak Vam to samozrejme
spadne.
> Dost dobre nechapu, jak to ze je ve vyse uvedenem prikladu treba
> asociativni pole @dbRows projet trikrat prikazem foreach - podle mne
Pozor! @dbRows by nebylo asociativni pole (hash), anybrz normalni pole
(ma za zacatku zavinac) a je to potreba projet trikrat jenom kvuli
tomu, ze jste si to tak napsal ;-)
> Precetl jsem si DBI.pm ale ze bych z toho byl moudrej.....
>
> Nevite se s tim nekdo rady? Urcite je to strasne jednoduchy.....
To jo -- zacnete tim, ze vysledek *arrayref priradite do skalaru.
> problem druhy:
> mohu v DBI pouzivat parametry SQL dotazu?
Ano.
> Jak se to dela?
Pouzijete placeholder (otaznik, :p1, :parametr) a pak bud bind_param
(resp. bind_parma_inout) nebo date parametry volanim execute, do,
select*, atp.
------------------------------------------------------------------------
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 Perl