将 HTML 表单链接到 SQLite 数据库

Nei*_*nez 4 html php

您好,感谢您抽出时间来解决我的问题。

我正在尝试为我的网站制作一个工作通讯表单,该表单应将一个人的姓名和电子邮件地址存储在数据库中。我不期望有太多数据要存储,所以我有点盲目地选择了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>
Run Code Online (Sandbox Code Playgroud)

这是我的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();

?>
Run Code Online (Sandbox Code Playgroud)

mydb.db SQLite 数据库是使用以下代码行创建的

CREATE TABLE subscribers (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
);
Run Code Online (Sandbox Code Playgroud)

每当单击“订阅”按钮时,控制台中的 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
Run Code Online (Sandbox Code Playgroud)

和网络 > 标头选项卡:

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
Run Code Online (Sandbox Code Playgroud)

我一直无法找到解决这个问题的方法。当然,我是一个新手,真诚地感谢您的帮助,所以请详细说明!再一次感谢你。

Lea*_*dro 5

检查enable_post_data_reading变量是否设置为oninphp.ini以验证是否需要接受POST

如果不起作用,请在此答案中发表评论,我很乐意更新我的答案。