• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Linux環境下Perl語言對數據庫的操縱

    發表于:2007-06-11來源:作者:點擊數: 標簽:
    實例:同一主機下的運行 主機配置:PIII450 128M 15GB 操作系統:Red Hat Linux 6.1 數據庫:MySQL-3.22.29 建議使用RPM方式安裝,至少要安裝下面三個包: MySQL-3.22.29-1.i386.rpm MySQL-client-3.22.29-1.i386.rpm MySQL-devel-3.22.29-1.i386.rpm WWW 服
    實例:同一主機下的運行

    主機配置:PIII450 128M 15GB

    操作系統:Red Hat Linux 6.1

    數據庫:MySQL-3.22.29

    建議使用RPM方式安裝,至少要安裝下面三個包:

    MySQL-3.22.29-1.i386.rpm

    MySQL-client-3.22.29-1.i386.rpm

    MySQL-devel-3.22.29-1.i386.rpm

    WWW服務器:Apache 1.3.6 for Linux

    Perl 解釋器:version 5.005_03 built for i386-linux

    DBI: 版本為:1.13

    Data-ShowTable: 版本為:3.3

    DBD: Msql-Mysql-modules-1.2018

    本人成功地在上述環境下實現了對MySQL數據庫的訪問。與Windows環境下的數據庫不同,它不需要建立外部數據源.

    下面是一個應用的簡單例子:

    為了統計用戶訪問我們的網站的次數,我們建立了一個數據庫, 在其中建一個表,表名為:usedata, 共有三列:userno,userpass,lognum,分別代表用戶名,密碼,登錄次數.

    假定我們使用test數據庫,在該庫中創建表usedata, 我們既可以編一個PERL程序實現,也可以在命令行方式下實現:

    <br>

    #mysql test<br>

    >CREATE TABLE usedata(userno CHAR(8) NOT NULL, usepass CHAR(8) NOT NULL, lognum INT);<br>

    >exit<br>

    共有兩個htm文件,兩個pl文件. <br>

    regist.htm <html><br>

    <head><br>

    <meta http-equiv=\"Content-Type\"<br>

    content=\"text/html; charset=gb_2312-80\"><br>

    <meta name=\"GENERATOR\" content=\"Microsoft FrontPage Express 2.0\"><br>

    <title>注冊</title><br>

    </head><br>

    <body><br>

    <p><center><font color=ff3380>用戶在線注冊</font></center><br>

    </p><br>

    <form action=\"/cgi-bin/database/regist.pl\" method=\"POST\"><br>

    <table border=\"0\"> <br>

    <td valign=\"top\"><font color=\"#400080\">用戶名<input type=text name=\IDNO\ size=4 maxlength=8></font><br>

    <td valign=\"top\"><font color=\"#400080\">密碼<input type=password name=\PASS\ size=6 maxlength=8></font><br>

    </table><br>

    <font color=\"#0080C0\"><input type=\"submit\"<br>

    value=\"注冊\"> <input type=\"reset\" value=\"清除\"> </font><br>

    </form><br>

    </body><br>

    </html> <br>

    login.htm <html><br>

    <head><br>

    <meta http-equiv=\"Content-Type\"<br>

    content=\"text/html; charset=gb_2312-80\"><br>

    <meta name=\"GENERATOR\" content=\"Microsoft FrontPage Express 2.0\"><br>

    <title>登錄</title><br>

    </head><br>

    <body><br>

    <p><center><font color=ff3380>用戶在線登錄</font></center><br>

    </p><br>

    <form action=\"/cgi-bin/database/login.pl\" method=\"POST\"><br>

    <table border=\"0\"> <br>

    <td valign=\"top\"><font color=\"#400080\">用戶名<input type=text name=\IDNO\ size=4 maxlength=8></font><br>

    <td valign=\"top\"><font color=\"#400080\">密碼<input type=password name=\PASS\ size=6 maxlength=8></font><br>

    </table><br>

    <font color=\"#0080C0\"><input type=\"submit\"<br>

    value=\"登錄\"> <input type=\"reset\" value=\"清除\"> </font><br>

    </form><br>

    </body><br>

    </html> <br>

    regist.pl #!/usr/bin/perl<br>

    # regist.pl

    <p>read(STDIN, $buffer, $ENV{\CONTENT_LENGTH\});<br>

    @pairs = split(/&/, $buffer);<br>

    foreach $pair (@pairs) {<br>

    ($name, $value) = split(/=/, $pair);<br>

    $value =~ tr/+/ /;<br>

    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg;<br>

    $value =~ s/<!--(.|\\n)*-->//g;<br>

    $value=~ s/<([^>]|\\n)*>//g;<br>

    $value=~ s/>/>/g;<br>

    $value=~ s/</</g; <br>

    $FORM{$name} = $value;<br>

    }

    <p>print \"Content-type: text/html\\n\\n\";

    <p>print \"<HTML><HEAD><TITLE>注冊</TITLE></HEAD>\\n\";

    <p>print \"<body bgcolor=#FFFFFF>\\n\";

    <p><br>

    if ($FORM{\IDNO\} eq \"\")<br>

    {<br>

    print<<EOF;<br>

    <center><font color=red>用戶名不能為空!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    exit(0);<br>

    }

    <p>if ($FORM{\PASS\} eq \"\")<br>

    {<br>

    print<<EOF;<br>

    <center><font color=red>密碼不能為空!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    exit(0);<br>

    }

    <p>$host= shift || \"\";<br>

    $test_db=\"test\";<br>

    $opt_user=$opt_password=\"\";

    <p>use DBI;

    <p>$|= 1; # Autoflush

    <p>$table=\"usedata\";

    <p>$dbh = DBI->connect(\"DBI:mysql:$test_db:$host\",$opt_user,$opt_password) || die \"Can\t connect: $DBI::errstr\\n\";

    <p>$n1 = $FORM{\IDNO\};

    <p>$sth=$dbh->prepare(\"select * from usedata where userno=$n1 \") or die $dbh->errstr;

    <p>$sth->execute() or die $sth->errstr;

    <p>if (($row = $sth->fetchrow_arrayref))<br>

    {<br>

    $dbh->disconnect();<br>

    print<<EOF;<br>

    <center><font color=red>用戶名已存在!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    exit(0);<br>

    }<br>

    $n2 = $FORM{\PASS\};<br>

    $n3 = 1;<br>

    $dbh->do(\"insert into $table values($n1, $n2,$n3)\") or die $DBI::errstr;

    <p>$dbh->disconnect();<br>

    print<<EOF;<br>

    <center>您已注冊成功!</center><br>

    </BODY></HTML><br>

    EOF<br>

    exit(0);

    <p>login.pl #!/usr/bin/perl<br>

    # login.pl

    <p>read(STDIN, $buffer, $ENV{\CONTENT_LENGTH\});<br>

    @pairs = split(/&/, $buffer);<br>

    foreach $pair (@pairs) {<br>

    ($name, $value) = split(/=/, $pair);<br>

    $value =~ tr/+/ /;<br>

    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg;<br>

    $value =~ s/<!--(.|\\n)*-->//g;<br>

    $value=~ s/<([^>]|\\n)*>//g;<br>

    $value=~ s/>/>/g;<br>

    $value=~ s/</</g; <br>

    $FORM{$name} = $value;<br>

    }

    <p>print \"Content-type: text/html\\n\\n\";

    <p>print \"<HTML><HEAD><TITLE>登錄</TITLE></HEAD>\\n\";

    <p>print \"<body bgcolor=#FFFFFF>\\n\";

    <p><br>

    if ($FORM{\IDNO\} eq \"\")<br>

    {<br>

    print<<EOF;<br>

    <center><font color=red>用戶名不能為空!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    exit(0);<br>

    }

    <p>if ($FORM{\PASS\} eq \"\")<br>

    {<br>

    print<<EOF;<br>

    <center><font color=red>密碼不能為空!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    exit(0);<br>

    }

    <p>$host= shift || \"\";<br>

    $test_db=\"test\";<br>

    $opt_user=$opt_password=\"\";<br>

    use DBI;<br>

    $|= 1; # Autoflush

    <p>$table=\"usedata\";

    <p>$dbh = DBI->connect(\"DBI:mysql:$test_db:$host\",$opt_user,$opt_password) || die \"Can\t connect: $DBI::errstr\\n\";

    <p>$n1 = $FORM{\IDNO\};<br>

    $sth=$dbh->prepare(\"select * from usedata where userno=$n1 \") or die $dbh->errstr;

    <p>$sth->execute() or die $sth->errstr;<br>

    if (($row = $sth->fetchrow_arrayref))<br>

    {<br>

    if ($row->[1] eq $FORM{\PASS\})<br>

    {<br>

    $NUM = $row->[2]+1;<br>

    $sth=$dbh->prepare(\"UPDATE usedata SET lognum=$NUM where userno=$n1 \") or die $dbh->errstr;<br>

    $sth->execute() or die $sth->errstr; print<<EOF;<br>

    <center>您第 $NUM 次登錄!</center><br>

    EOF<br>

    }<br>

    else<br>

    {<br>

    print<<EOF; <br>

    <center><font color=red>密碼不正確!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    }<br>

    }<br>

    else<br>

    {<br>

    print<<EOF; <br>

    <center><font color=red>用戶名不正確!</font><br>

    返回<a href=\javascript:history.go(-1);\>前頁</a>修改<br>

    </center><br>

    EOF<br>

    }<br>

    $dbh->disconnect();<br>

    print <<EOF;<br>

    </body></html><br>

    EOF<br>

    exit(0); <br>

    原文轉自:http://www.kjueaiud.com

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>