无法使用Perl插入MySQL

时间:2015-11-15 07:03:10

标签: mysql perl

我是Perl的新手,我一直在尝试这个简单的程序将值插入数据库。我有两个文件,一个将表单值发送到Perl文件的HTML文件。但是我无法进行任何插入或检索;我总是得到一个空页作为输出。

HTML文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>8th program</title>
    </head>
    <body>
        <form action="http://localhost:81/cgi-bin/8.pl" method="post">
            NAME:<input type="text" name="name"><br>
            AGE:<input type="text" name="age"><br>
            <input type="submit" value="submit">
        </form>
    </body>
</html> 

Perl文件:

#!"C:\xampp\perl\bin\perl.exe"

print "Content-Type:text/html\n\n";

use CGI ':standard';
use DBI;

print "<html><head><title>insert</title></head>";

$dbh  = DBI->connect( "DBI:mysql:test", "root", " " );

$name = param( "name" );
$age  = param( "age" );

$qh   = $dbh->prepare( "insert into student values('$name','$age')" );
$qh->execute();

$qh = $dbh->prepare( "select * from student" );
$qh->execute();

print "<table border size=1>
       <tr>
       <th>Name</th>
       <th>Age</th>
       </tr>";

while ( ( $name, $age ) = $qh->fetchrow() ) {
    print "<tr><td>$name</td>
 <td>$age</td></tr>";
}

print "</table>";

$qh->finish();

$dbh->disconnect();

print "</html>";

请帮助我。

1 个答案:

答案 0 :(得分:4)

没有DBI方法fetchrow。在这种情况下,它看起来像是fetchrow_array

此外,请注意以下几点

  • 在Windows系统上,将忽略一个shebang行,除了指定的任何命令开关都将被接受。 perl编译器/解释器的路径必须在别处定义

  • 必须始终

    use strict;
    use warnings 'all';
    

    在您编写的每个Perl程序的顶部,并声明每个变量尽可能接近其第一个使用点

  • 您应该使用占位符而不是将参数插入到SQL字符串中。像这样,例如

    my $qh = $dbh->prepare( 'INSERT INTO student (name, age) VALUES (?, ?)' );
    $qh->execute($name, $age);
    
  • 致电finish是错误的。 The documentation有此

      

    添加对&#34;完成&#34;在[a]循环之后获取所有行是常见的   错误,不要做,它可以掩盖像未捕获的真正的问题   错误。