/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
DBI/oracle.....hjælp
Fra : Peter


Dato : 12-01-01 09:51

Hej

Jeg har lavet det her script der kører fint, bortset fra
at det opfører sig som om rækkerne ikke indeholder data.

mit output ser således ud:
____________________________________________________________________________
__
, ok
, ok
____________________________________________________________________________
__
Kan du se hvorfor ?
Her er scriptet:
____________________________________________________________________________
__
#!/opt/bin/perl

require 'cgi-lib.pl';
use CGI::Carp qw(fatalsToBrowser);

use lib '/opt/lib/perl5/site_perl/5.005/sun4-solaris';
use DBI;

print "Content-type: text/html\n\n";
print "<html>\n <head>\n";
print " <title>Thank You</title>\n";
print " </head>\n <body>";

&DB;

sub DB
{
$driver="Oracle";
$database="DBNAVN";
$user="usernavn";
$password="349fh15";
$dsn = "dbi:$driver:$database";

$dbh = DBI->connect($dsn, $user, $password) or die "Fejl...
$DBI::errstr\n";;

$sth = $dbh->prepare(qq{
select f1,f2
from dummy
}) or die "Fejl... $dbh->errstr\n";

$sth->execute or die "Fejl...";

while (@row=$sth->fetchrow_array())
{
print @row[0]; #denne er tom
print ",";
print @row[1]; #denne er tom
print " ok<br>";
}
$dbh->disconnect;

}

print " </body>\n </html>";
____________________________________________________________________________
__

På forhånd tak

--
Venlig hilsen

Peter



 
 
Nezar Nielsen (12-01-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 12-01-01 11:39

"Peter" <peter@cgi-shop.dk> skrev i en meddelelse
news:93mgk2$9tk$1@news.inet.tele.dk...
> Hej
>
> Jeg har lavet det her script der kører fint, bortset fra
> at det opfører sig som om rækkerne ikke indeholder data.
>
.....

> while (@row=$sth->fetchrow_array())
> {
> print @row[0]; #denne er tom
> print ",";
> print @row[1]; #denne er tom
> print " ok<br>";
> }

Hvad hvis du gør sådan her, får du så noget ud?:

while (my $row = $sth->fetchrow_hashref) {
for(keys %{$row}){
print $_.' = "'.$row->{$_}."\"\n";
}
}

Husk iøvrigt at $liste[0] er det 0'te element fra @liste. (@liste[0] er så
vidt jeg husker et array-slice)

--
Mvh. Nezar Nielsen
http://fez.dk/




Peter (12-01-2001)
Kommentar
Fra : Peter


Dato : 12-01-01 12:26

> Hvad hvis du gør sådan her, får du så noget ud?:
>
> while (my $row = $sth->fetchrow_hashref) {
> for(keys %{$row}){
> print $_.' = "'.$row->{$_}."\"\n";
> }
> }

Det giver følgende (stadig tomme) output:
____________________________________
F2 = "" F1 = "" F2 = "" F1 = ""
____________________________________

Venlig hilsen
Peter



Nezar Nielsen (12-01-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 12-01-01 17:39

"Peter" <peter@cgi-shop.dk> skrev i en meddelelse
news:93mpm0$b6g$1@news.inet.tele.dk...
> > Hvad hvis du gør sådan her, får du så noget ud?:
> >
> > while (my $row = $sth->fetchrow_hashref) {
> > for(keys %{$row}){
> > print $_.' = "'.$row->{$_}."\"\n";
> > }
> > }
>
> Det giver følgende (stadig tomme) output:
> ____________________________________
> F2 = "" F1 = "" F2 = "" F1 = ""
> ____________________________________
>

Og så er det så nu jeg bliver nød til at spørge om de 2 rækker rent faktisk
INDEHOLDER data i F2 og F1 felterne?

Hvis de gør det, så kunne det godt tyde på at dit DBD::Oracle ikke virker
ordentligt med den version af serveren du har.

(måske kunne det være et problem at du beder om f1 og f2, hvor felterne i
virkeligheden hedder F1 og F2, men så burde du få en fejl(især hvis du har
slået PrintError til)).

--
Mvh. Nezar Nielsen
http://fez.dk/




Ask Bjoern Hansen (12-01-2001)
Kommentar
Fra : Ask Bjoern Hansen


Dato : 12-01-01 23:51

"Peter" <peter@cgi-shop.dk> writes:

> #!/opt/bin/perl

Du mangler -w efter /perl og "use strict;" paa linjen efter.

> $dbh = DBI->connect($dsn, $user, $password) or die "Fejl...
> $DBI::errstr\n";

Hvis du bruger

$dbh->{RaiseError} = 1;

behoever du ikke at lave en 'or die ...' efter hver $sth dims.

> while (@row=$sth->fetchrow_array())
> {
> print @row[0]; #denne er tom
> print ",";
> print @row[1]; #denne er tom

Det burde vaere $row[0] og $row[1].

> print " ok<br>";
> }
> $dbh->disconnect;

Er du sikker paa at du har noget i databasen?


- ask

--
ask bjoern hansen - http://ask.netcetera.dk/

Peter (16-01-2001)
Kommentar
Fra : Peter


Dato : 16-01-01 21:23


Ups.

Det viste sig at der ikke var data i rækkerne.
(jeg har kun adgang til databsen via perl og havde fået fortalt at der var
lagt data i, jeg kunne teste på)
Så mit script er ok.

Tak for alle svarene.

--
Venlig hilsen

Peter



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste