Patrick: Perl auf Mysql

Hallo

Kann mir einer erklären wie ich per Perl und das Modul DBI  auf eine Mysql-Datenbank zugreifen kann?

Gibt es irgendwo (Homepage) eine (deutsche) Erklärung dazu?

Patrick Müller

  1. Klar doch. Lad dir das DBI-Modul und installier es. Unter Windows mit dem ppm (PerlPacketManager). Der liegt eventuell als ppm.pl vor. Dann musst du ihn mit perl ppm aufrufen. Wie des genau geht erfährst du unter http://DBI.PERL.ORG . Wie die Installation mit ActivePerl geht findest du unter http://xmlproj.com/fom-serve/cache/13.html
    Wenn du kein Windows benutzt schau mal unter http://xmlproj.com/fom-serve/cache/61.html
    Mit Fragen zur Syntax wendes du dich am besten an http://mysql.turbolift.com/DBD_3.22.X.php3 . Da solltest du genug finden. Das geht dann einfach mit SQL-Statements, die dein Perl an dein Mysql übergeben muss. Also noch viel Spaß beim SQL Lernen.
    Wenn damit echt nicht weiterkomst oder die SQL-Treiber für das DBI nicht installiert bekommst, mail mir oder schreibst in die News auf meiner HP.

    1. Das mit dem Installieren hat geklappt.

      Geht es, dass die Erklärung auch in Deutsch ist?
      Englisch ist nicht so meine Stärke...

      1. Versuch's einfach so:
        die als SQLFORM.CGI
        #!E:/Perl/bin/perl -w
        use CGI;
        use CGI qw(:standard);
        use DBI;
        use strict;
        my $quiet = 1;
        my @drivers = DBI->available_drivers($quiet);
        print header;
        print "<html>\n<head>\n\t<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">\n\t<title>pcw.homeip.net</title>\n<STYLE type=text/css>\n";
        print "<!--\n",
        "A:link {COLOR: #3c5b9b; TEXT-DECORATION: none}\n",
        "A:visited { COLOR: #3c5b9b; TEXT-DECORATION: none}\n",
        "A:hover {COLOR: #e12033;}\n",
        "A:active {FONT-SIZE: 20px; COLOR: black; TEXT-DECORATION: underline}\n",
        "th {background-color: #071B72; color: #417ab8; padding:4px; font-family:verdana;font-size:14; border-color:black; border-width:2px; border-style:solid;}\n",
        "td {background-color: #011340; color: silver; padding-left:4px;padding-right:4px;font-family:verdana; font-size:12px}\n",
        "img {border:0}\n",
        "-->\n",
        "</STYLE>\n",
        "\t</head>\n";
        print "<body LINK="#619AB8" VLINK="#417ab8" ALINK="#91caff" bgcolor="#011340" text="#619AB8" style="margin:0">\n",
        "\t<table width="100%" cellpadding="0" cellspacing="4">\n",
        "\t\t<tr>\n",
        "\t\t\t<th border="2">SQL-Abfrage - Eingabe</th>\n",
        "\t\t</tr><tr>\n",
        "\t\t\t<td style=" border-color:black; border-width:2px; border-style:solid;"><center>\n",
        "\t\t\t\t<table>\n",
        "\t\t\t\t\t<tr>\n",
        "\t\t\t\t\t\t<td colspan="2"><form method="post" action="/cgi-bin/sql.cgi">\n",
        "\t\t\t\t\t\t\t<b>Ihre Anfrage:</b><br>\n",
        "\t\t\t\t\t\t\t<TEXTAREA name="sqlsth" rows="5" cols="54"></TEXTAREA><br>\n",
        "\t\t\t\t\t\t\t an Datenbank:<br>\n",
        "\t\t\t\t\t\t\t<input type="text" name="sqldb"  size=57 />\n";
        print popup_menu(-name=>'sqldrv',
              -values=>@drivers,
              -default=>'mysql');
        print "\t\t\t\t\t\t\t<br>\n",
        "\t\t\t\t\t\t\tals User:<br>\n",
        "\t\t\t\t\t\t\t<input type="text" name="sqlname"  size=72 /><br>\n",
        "\t\t\t\t\t\t\tmit Passwort:<br>\n",
        "\t\t\t\t\t\t\t<input type="text" name="sqlpwd"  size=72 /><br>\n",
        "\t\t\t\t\t\t</td>\n",
        "\t\t\t\t\t</tr><tr>\n",
        "\t\t\t\t\t\t<td><input type="reset"/></td>\n",
        "\t\t\t\t\t\t<td align="right"> <input type="submit" name="submit"/></td>\n",
        "\t\t\t\t\t</tr>\n",
        "\t\t\t\t</table>\n",
        "\t\t\t</center>\n",
        "\t\t</td>\n",
        "\t</tr>\n",
        "</table>\n",
        "</body>\n",
        "</html>\n";

        und die als SQL.CGI
        #!E:/Perl/bin/perl -w
        use CGI;
        print header();
        use CGI qw(:standard);
        my $q=param('sqlsth');
        my $db=param('sqldb');
        my $sdrv=param('sqldrv');
        my $name=param('sqlname');
        my $pwd=param('sqlpwd');
        if($q ne ''){
        use DBI;
        #use strict;
        my $dbh = DBI->connect("DBI:$sdrv:$db",$name,$pwd)
        or die "Unable to connect to contacts Database!\n";# $dbh->errstr\n";
        $dbh->{RaiseError} = 1;
        my $sth = $dbh->prepare($q);
        $sth->execute or
        die "Unable to execute query: $dbh->errstr\n";
        print "<html><head>\n<title>SQL-Abfrage-Ergebnis - '$q'</title>\n</head>\n";
        print "<body bgcolor="#cococo" text="black">\n",
              "<b>Ergebnis für SQL-Abfrage:<br>\n'$q'</b><br>\n<p>\n";
        my @row;
        while(@row = $sth->fetchrow_array) {
           print "\t$row[0] -  $row[1]<br>\n";
        }
        $sth->finish;
        $dbh->disconnect;
        print "</p>\n</body>\n</html>";
        }
        else {print "<html>\n<head>\n<title>SQL-Abfrage-Fehler</title>\n<head>\n<body bgcolor="#cococo" text="black">\nLeere Eingabe. Abgfrage nicht möglich!\n</body>\n</html>\n"}

        Dann kannst du SQLFORM.CGI aufrufen und ein einfaches SQL-Statement eingeben zum abfragen. Bei Fragen zu SQL wende dich an mysql.de. Da kann ich dir och nicht viel weiterhelfen so auf die Schnelle