Perl-Skript zum Eintragen in Datenbank
am 25.04.2006 20:19:08 von Marek StepanekHallo alle!
Ich bin nicht ganz sicher, ob ich hier on-topic bin.
Ich bin MySQL Anfänger und arbeite ein etwas veraltetes Buch durch, das
darüber hinaus auch nicht sonderlich pädagogisch ist: MySQL & Perl -
Developer's Guide, Paul DuBois ...
Auf Seite 83 das todo1.pl - Skript erzeugt bei mir folgende Fehlermeldung im
Apache error_log:
[Mon Apr 24 11:12:38 2006] [error] [client 127.0.0.1] DBI->connect using
'old-style' syntax is deprecated and will be an error in future versions at
/usr/local/apache2/modules/WebDB.pm line 11, referer:
http://localhost/cgi-bin/todo1.pl
[Mon Apr 24 11:12:38 2006] [error] [client 127.0.0.1] Can't use string ("0")
as a HASH ref while "strict refs" in use at
/usr/local/lib/perl5/site_perl/5.8.8/darwin-2level/DBI.pm line 540.,
referer: http://localhost/cgi-bin/todo1.pl
Das folgende Skript "insert_test.pl" ist eine Kurzform, das ich für diese
Forumsanfrage gekürzt habe. Es erzeugt über die Shell aufgerufen die selbe
Fehlermeldung.
Kann mir jemand helfen ?
#! /usr/bin/perl -w
# insert_test.pl
use strict;
use lib qw(/usr/local/apache2/modules);
use WebDB;
my ($inhalt) = "Dies ist ein neuer Eintrag in die Todo-Liste!";
my $dbh;
$inhalt =~ s/^\s+//; # Leerzeichen vorne weg
$inhalt =~ s/\s+$//; # Leerzeichen am Ende weg
if ($inhalt ne "") # falls noch was übrig ist
{
$dbh = WebDB::connect ();
$dbh->do (qq{
INSERT INTO todo SET t = NOW(),
status = 'offen', inhalt = ?
}, undef, $inhalt);
$dbh->disconnect ();
}
Das Verbindungsmodul in /usr/local/apache2/modules/WebDB :
package WebDB;
use strict;
use DBI;
my $host_name = "localhost";
my $db_name = "webdb";
my $dsn = "DBI:mysql:host=$host_name;database=$db_name";
sub connect {
return (DBI->connect ($dsn, "webdev", "webdevpass", (PrintError => 0,
RaiseError => 1)));
}
sub conncect_mit_options_datei {
$dsn .= ";mysql_read_default_file=$ENV{HOME}/.my.cnf";
return (DBI->connect ($dsn, undef, undef, (PrintError => 0, RaiseError
=> 1)));
}
1;