Я новичок в Perl, и я пытался эту простую программу вставлять значения в базу данных. У меня есть два файла, HTML-файл, который отправляет значения формы в файл Perl. Но я не могу выполнить какую-либо вставку или извлечение; Я всегда получаю пустую страницу в качестве вывода.Невозможно вставить в MySQL с помощью Perl
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>";
Пожалуйста, помогите мне с этим.
Сообщение об ошибке брошенной Perl очень определенно идентифицирует проблему. – ikegami
(1) Какие сообщения об ошибках вы получаете? Их можно найти в журнале ошибок вашего веб-сервера. (2) Интерполяция значений из веб-формы непосредственно в вашу строку SQL - это ОГРОМНОЕ отверстие безопасности. Вместо этого используйте SQL-заполнители. См. Http://bobby-tables.com/ для получения более подробной информации об этой проблеме и ее устранении. –
** Опасность **: ваш код уязвим для SQL-инъекции. Используйте заполнители в ваших подготовленных заявлениях. – Quentin