Schrift
[thread]12987[/thread]

Newbie -Keine Ausgabe bei mysql-query

Leser: 2


<< |< 1 2 3 4 ... 7 >| >> 63 Einträge, 7 Seiten
Gast Gast
 2009-01-14 01:45
#117916 #117916
Hallo Freunde,
arbeite mich gerade in das Buch von DataBecker Perl CGI ein
dabei teste ich die erste DB-Verbindung
Fehlermeldungen bekomme ich keine nur einen weissen Bildschirm ohne Ausgabe
Vorraussetzung erfüllt (Db angelegt, Tabelle angelegt, Daten eingefügt
script (dbi4.pl)
gibt es es eine Möglichkeit zu testen ob Verbindung hergestellt wird?
bei den tests:
verfügbare Treiber anzeigen: Leere Seite (dbi2.pl)
vorhandene Datenquellen: Leere Seite 7dbi3.pl)
Meine scripte: ich nutze XP-Prof (habe es auch mit: #!C.\Perl\bin\perl.exe -w) versucht
dbi2.pl
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl -w
# dbi2.pl vorhandene Datenbanktreiber
use DBI;
print "Content-type: text/html\n\n";
@drivers = DBI->available_drivers;
print "vorhandene Treiber:<br>";
foreach (@driver){
print "$_<br>";
}

dbi3.pl
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl -w
# dbi3.pl vorhandene Datenquellen
use DBI;
print "Content-type: text/html\n\n";
$driver = "mysql";
@sources = DBI->data_sources($driver);
print "vorhandene Datenquellen:<br>";
foreach (@sources){
print "$_<br>";
}

Verbindung und auslesen aus Db-Tabelle dbi4.pl
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w
# dbi4.pl Anweisungs-Handles
use DBI;
print "Content-type: text/html\n\n";
my $db = "adressen";
my $SQL_Driver = "mysql";
my $SQL_User="root";
my $SQL_Passw="Felix31.07";
my $dbh = DBI ->connect("DBI:SQL_Driver:$db", $SQL_User, $SQL_Passw)
or die "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n";
my $sth= $dbh ->prepare("SELECT * FROM adressen") or die "Die
SQL-Anweisung konnte nicht vorbereitet werden: $DBI::errstr\n";
$sth->execute();
while (@ary = $sth->fetchrow_array)
{
foreach (@ary)
{
print "$_ ";
}
$sth->finish;
$dbh->disconnect;
}
pq
 2009-01-14 09:29
#117918 #117918
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
verstehe ich das richtig, dass du bei allen 3 skripten eine leere seite bekommst?
zumindest bei den ersten beiden sollte ja etwas ausgegeben werden.
wenn ja, dann such im errorlog nach fehlern. ausserdem lohnt eslich immer, CGI-skripte
auch mal auf der kommandozeile aufzurufen, um sicherzustellen, wo der fehler liegt.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2009-01-14 09:32
#117919 #117919
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
zu db2.pl: Einmal benutzt Du "@driver" und einmal "@drivers". Deshalb ein Tipp: Benutze immer Wiki:strict

zu db4.pl: Im Aufbau der Verbindung zur Datenbank hast Du "SQL_Driver" stehen - als String und nicht als Variable.

Du solltest überall eine ausführliche Fehlerbehandlung machen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
deletemast
 2009-01-14 12:51
#117930 #117930
User since
2009-01-14
23 Artikel
BenutzerIn
[default_avatar]
Danke erst mal,
also zu dbi2.pl bekomme ich jetzt auf der Konsole eine Ausgabe, jedoch nicht im Browser (Die Seite versucht ewig lange zu laden)
zu bdi4.pl: habe die Zeile geändert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl -w
# dbi4.pl Anweisungs-Handles
use DBI;
print "Content-type: text/html\n\n";
my $db = "adressen";
my $SQL_Driver = "mysql";
my $SQL_User="root";
my $SQL_Passw="";
my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw)
or die "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n";

my $sth= $dbh->prepare("SELECT * FROM adressen") or die "Die
SQL-Anweisung konnte nicht vorbereitet werden: $DBI::errstr\n";
$sth->execute();
while (@ary = $sth->fetchrow_array) {
foreach (@ary) {
print "$_";
}
print "<br>";
}
$sth->finish;
$dbh->disconnect;
<STDIN>; # damit das Konsolenfenster sich nicht sofort schliesst


trotzdem bekomme ich weder auf der Konsole noch im Browser eine Ausgabe und die Konsole blinkt nur kurz auf.
Struppi
 2009-01-14 13:17
#117932 #117932
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Schreib die Zeile mit dem Header mal in einen BEGIN Block und lenk die Fehlerausgabe in den Browser:
Code (perl): (dl )
1
2
3
4
BEGIN {
print "Content-type: text/html\n\n";
use CGI::Carp qw/fatalsToBrowser/
}

was passiert dann?
pktm
 2009-01-14 13:29
#117935 #117935
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Setze mal den Pfad zu deinem Interpreter korrekt. Wenn du Perl unter C.\Perl installiert hast, dann muss der Shebang lauten: #/Perl/bin/perl

use strict; und use warnings; weisen dich dann auf die restlichen Fehler hin (auch, wenn da so selten in einem Buch steht).

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
deletemast
 2009-01-14 13:40
#117938 #117938
User since
2009-01-14
23 Artikel
BenutzerIn
[default_avatar]
@struppi
hab das mal bei dbi2.pl versucht
folgende Browserausgabe:
Software error:
Can't call method "Begin" without a package or object reference at c:\inetpub\wwwroot\cgi-bin\dbi2.pl line 4.

For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.
renee
 2009-01-14 13:41
#117939 #117939
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Struppe: braucht man nicht unbedingt machen. CGI::Carp sendet selbst einen Header wenn ein Fehler passiert...

@deletemast: Mach auch mal bei dem execute ein "or die $DBI::errstr"!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2009-01-14 13:42
#117940 #117940
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
BEGIN wird komplett groß geschrieben!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
deletemast
 2009-01-14 13:44
#117941 #117941
User since
2009-01-14
23 Artikel
BenutzerIn
[default_avatar]
@pktm
Hab den Shebang geändert und die Datei um die Zeilen von Struppi erweitert
Ausgabe:
Software error:
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at (eval 5) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: CSV, DBM, ExampleP, File, Gofer, ODBC, Oracle, Proxy, SQLite, Sponge.
at c:\inetpub\wwwroot\cgi-bin\dbi4.pl line 12

For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.


Also es fehlt wohl der mysql-Treiber
auf der Konsole werden folgende Treiber aufgeführt:
CSV, DBM, ExampleP, File, Gofer, ODBC, Oracle, Proxy, SQLite, Sponge

Allerdings bekomme ich diese Ausgabe nur in der Konsole
<< |< 1 2 3 4 ... 7 >| >> 63 Einträge, 7 Seiten



View all threads created 2009-01-14 01:45.