You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地网页POST表单至MySQL服务器遇405/404错误求助

解决表单提交时的405/404错误及相关问题

先从你给出的信息里抓几个核心问题,一步步来解决:

1. 核心问题:Node.js服务器无法处理PHP文件

你的Node.js日志显示"POST /insert.php" Error (404): "Not found",这说明当前你的网站是用Node.js服务器托管的,但Node.js本身不支持解析PHP脚本。PHP需要搭配Apache、Nginx这类支持PHP运行的服务器(比如XAMPP、WAMP套件)。

解决办法:

  • 如果你要使用PHP处理表单,需要把网站文件放到PHP服务器的根目录下(比如XAMPP的htdocs文件夹),然后用Apache/Nginx来启动服务,而不是Node.js。
  • 如果你想继续用Node.js,那需要改用Node.js的数据库操作方式(比如用mysql2包),替换掉PHP脚本。

2. HTML表单的name属性缺失

你的表单里的输入元素只有id,但PHP的$_POST是通过元素的name属性来获取值的,不是id。比如你的昵称输入框:

<input type="text" id="nickname-input" required placeholder="Give your field a nickname for easier reference">

需要添加name属性:

<input type="text" id="nickname-input" name="nickname-input" required placeholder="Give your field a nickname for easier reference">

所有需要提交的输入框、下拉框都要加上对应的name属性,否则PHP拿不到任何POST数据。

3. PHP脚本的语法错误与安全问题

你的PHP代码有两个明显问题:

语法错误

SQL语句里的'$_POST[plant-input], '$_POST[orientation-input]'这里少了一个闭合的单引号,正确的片段应该是:

'$_POST[plant-input]', '$_POST[orientation-input]'

严重的SQL注入风险

直接把$_POST的值拼到SQL语句里,会导致SQL注入攻击,这是非常危险的。必须使用预处理语句来避免这个问题,示例代码如下:

<?php
$host = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbname = "test";

// 建立连接并检查连接状态
$connect = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
if (!$connect) {
    die("连接失败: " . mysqli_connect_error());
}

// 使用预处理语句构建插入操作
$stmt = mysqli_prepare($connect, "INSERT INTO data (nickname, location, crop, rowspacing, plantspacing, orientation) VALUES (?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "ssssss", $nickname, $location, $crop, $rowspacing, $plantspacing, $orientation);

// 为预处理语句赋值
$nickname = $_POST['nickname-input'];
$location = $_POST['location-input'];
$crop = $_POST['crop-input'];
$rowspacing = $_POST['row-input'];
$plantspacing = $_POST['plant-input'];
$orientation = $_POST['orientation-input'];

// 执行语句并反馈结果
if(mysqli_stmt_execute($stmt)){
    echo "数据插入成功";
} else {
    echo "错误: " . mysqli_error($connect);
}

// 关闭资源与连接
mysqli_stmt_close($stmt);
mysqli_close($connect);
?>

4. 关于405 Method Not Allowed错误

这个错误大概率是因为Node.js返回404后,浏览器的后续处理或者服务器配置导致的。解决了上面的服务器问题(用PHP服务器托管文件),这个错误应该会随之消失。

内容的提问来源于stack exchange,提问作者Jake McClenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:18:01