【发布时间】:2012-08-22 21:38:24
【问题描述】:
我已经在 PHP 和 sqlite 上苦苦挣扎了一段时间,我只是让自己感到困惑。
我有一个 html 表单,可以访问一个名为 processFeedback.php 的 php 脚本。我的 html 代码看起来像这样..
<html>
<head>
</head>
<body>
<form action="processFeedback.php" method="POST">
<table>
<tr>
<td>Name:</td><td><input name="name"/></td>
</tr>
<tr>
<td>Email:</td><td><input name="email"/></td>
</tr>
<tr>
<td>Comments:</td><td><textarea name="comments"></textarea></td>
</tr>
<tr>
<td></td><td><input type="submit" value="Submit"/></td>
</tr>
</table>
</form>
</body>
</html>
我的 php 文件看起来像这样......
<?php
try
{
//open the database
$db = new PDO('sqlite:feedback.db');
$name = $_POST["name"];
$email = $_POST["email"];
$comments = $_POST["comments"];
//Insert record
$db->exec("INSERT INTO feedback (name, email,comments) VALUES ('&name', '&email','&comments');");
//now output the data to a simple html table...
print "<table border=1>";
print "<tr><td>Id</td><td>Name</td><td>Email</td><td>Comments</td></tr>";
$result = $db->query('SELECT * FROM feedback');
foreach($result as $row)
{
print "<tr><td>".$row['feedbackid']."</td>";
print "<td>".$row['name']."</td>";
print "<td>".$row['email']."</td>";
print "<td>".$row['comments']."</td>";
}
print "</table>";
$db = NULL;
}
catch(PDOException $e)
{
print 'Exception : ' .$e->getMessage();
}
?>
这是我的表创建方法...
CREATE TABLE feedback (feedbackid INTEGER PRIMARY KEY,name TEXT,email TEXT,comments TEXT);
表单正在输出表头以及我使用终端手动输入的记录,但它不会在其中插入记录???任何人都可以看到一个简单的错误吗?
迪斯科
【问题讨论】:
-
附带说明,请注意 SQL 注入:php.net/manual/en/security.database.sql-injection.php
-
好的,请记住这一点。但是我只是在学习 atm
-
我明白了,这是值得早点学习的东西,看看它会导致什么问题。