PHP SQlite数据库表单

PHP SQlite数据库表单,php,sqlite,Php,Sqlite,我已经在PHP和sqlite中挣扎了一段时间了,我只是把自己弄糊涂了。 我有一个html表单,可以访问名为processFeedback.php的php脚本 <html> <head> </head> <body> <form action="processFeedback.php" method="POST"> <table> <tr> <td>Nam

我已经在PHP和sqlite中挣扎了一段时间了,我只是把自己弄糊涂了。
我有一个html表单,可以访问名为processFeedback.php的php脚本

<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>
表单正在输出表格标题和一条我使用终端手动输入的记录,但它不会在???中插入记录???有人能看出一个容易犯的错误吗


Disco检查以确保PK列[feedbackid]在数据库中自动生成(自动递增)

编辑:这不是绝对必要的,但是缺少显式的自动增量可能会使中间件感到困惑。至少,尝试将显式自动增量添加到另一个表以进行测试不会有什么坏处

//插入记录
$db->exec(“插入反馈(姓名、电子邮件、评论) 值(“&name'、“&email'、“&comments');”

一个明显的问题是您没有进行错误检查:

如果(1!=$db->exec(“插入…”){ 打印“错误:”。内爆(“/”,$db->errorInfo())。“
\n”; }

虽然我对PDO不太熟悉,但我不知道占位符是如何映射到相应的PHP变量的,这可能是错误的原因:

$bound=array(
     $_POST["name"], $_POST["email"], $_POST["comments"] 
);
$stm=$db->prepare("INSERT INTO feedback (name, email,comments) 
   VALUES (?, ?,?));"

if (!$stm || !$stm->execute($bound)) {
     print "Error: " . implode('/',$db->errorInfo()) . "<br />\n";
}
$bound=array(
$\u POST[“name”]、$\u POST[“email”]、$\u POST[“comments”]
);
$stm=$db->prepare(“插入反馈(姓名、电子邮件、评论))
数值(?,?);"
如果(!$stm | |!$stm->execute($bound)){
打印“错误:”。内爆(“/”,$db->errorInfo())。“
\n”; }
作为旁注,请注意SQL注入:好的,我会记住这一点。不过我只是在学习atmI了解,这是一件值得早期学习的事情,看看它会导致什么问题。是的。它是一个自动递增的列。你能发布你的表创建语句吗。将它添加到原始问题中我不明白为什么我需要这样做当我使用terminal手动插入时,它仍然可以工作。当然这意味着它是自动递增的吗?我不使用PHP,但经常使用SQLite。您确定要将变量用单引号括起来吗?(“&name”“,”&email”“,“&comments”“);啊,brilliant收到了一个错误,说我正在尝试写入只读数据库:)好的,我已将数据库文件的权限更改为读/写,但现在我收到了这个错误:00000/14/无法打开数据库文件,但下面仍显示我手动输入的记录编辑正在工作。我必须将数据库向上移动一个目录,然后为inster查询提供读/写权限
CREATE TABLE feedback (feedbackid INTEGER PRIMARY KEY,name TEXT,email TEXT,comments TEXT);
$bound=array(
     $_POST["name"], $_POST["email"], $_POST["comments"] 
);
$stm=$db->prepare("INSERT INTO feedback (name, email,comments) 
   VALUES (?, ?,?));"

if (!$stm || !$stm->execute($bound)) {
     print "Error: " . implode('/',$db->errorInfo()) . "<br />\n";
}