我是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>";
请帮助我。
答案 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]循环之后获取所有行是常见的 错误,不要做,它可以掩盖像未捕获的真正的问题 错误。