你好,感谢您抽出时间查看我的问题。
我正在尝试为我的网站制作一个工作的通讯表格,它应该将人的姓名和电子邮件地址存储在数据库中。我不希望有太多数据需要存储,所以我有点盲目地选择了SQLite
。
我的文件夹包含一个HTML文件、一个PHP文件和一个SQLite数据库:
这是我的index.html文件:
<h1>Newsletter Signup</h1>
<form method="POST" action="./submit.php">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required>
<input type="submit" value="Subscribe">
</form>
这是我的submit.php文件:
<?php
$db = new SQLite3('mydb.db');
if (!$db) {
die("Error connecting to database.");
}
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
if (!$name || !$email) {
die("Name and email are required.");
}
$stmt = $db->prepare('INSERT INTO subscribers (name, email) VALUES (:name, :email)');
if (!$stmt) {
die("Error preparing statement.");
}
$stmt->bindValue(':name', $name);
$stmt->bindValue(':email', $email);
$result = $stmt->execute();
if (!$result) {
die("Error executing statement.");
}
$db->close();
exit();
?>
以下代码创建了 mydb.db SQLite 数据库:
CREATE TABLE subscribers (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
);
每当单击“订阅”按钮时,以下消息将通过DevTools在控制台中显示:
(In red) Failed to load resource: the server responded with a status of 405 () chrome-error://chromewebdata/:1
(In yellow) VM491:161 crbug/1173575, non-JS module files deprecated.
(anonymous) @ VM491:161
和网络 > 标头选项卡:
Status: (failed)net::ERR_HTTP_RESPONSE_CODE_FAILURE
Request Method: POST
Status Code: 405 Method Not Allowed
Referrer Policy: strict-origin-when-cross-origin
Allow: GET, HEAD, OPTIONS
我一直没有找到解决这个问题的方法。当然,我是一个新手,真诚地希望得到您的帮助,请详细说明!再次感谢。
index.html
在同一个目录下,action="./submit.php"
可能可行,但去掉./
也可以。 - Don't Panic