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

PHP代码无法运行:仅显示文件内容,无法插入数据库

问题分析与解决步骤

1. 核心问题:本地文件协议无法解析PHP

你用chrome --allow-file-access-from-files file:///C:/filepath/index2.html直接打开HTML文件的方式,浏览器不会执行PHP代码——PHP必须运行在Web服务器(如XAMPP、WAMP、PHP内置服务器)环境中,浏览器只会把insert.php当成普通文本文件读取,这就是success回调弹窗显示PHP代码内容的原因。

解决方法:

  • 搭建本地Web服务器:安装XAMPP/WAMP后,将HTML和PHP文件放到服务器根目录(比如XAMPP的htdocs文件夹),通过http://localhost/index2.html访问页面,而非file://协议。
  • 用PHP内置服务器:打开命令行进入文件所在目录,执行php -S localhost:8000,再在浏览器访问http://localhost:8000/index2.html。

2. PHP代码的SQL语法与安全问题

你的INSERT语句存在两处关键错误,同时有SQL注入风险:

  • 列名不能用单引号,应使用反引号(`)或直接省略(若列名不是SQL关键字);
  • 字符串类型的变量(name、email)未加单引号包裹,SQL会将其识别为字段名而非值,且直接拼接变量存在注入风险,需用预处理语句。

修正后的insert.php代码:

<?php
// 开启错误提示,方便调试
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 避免未定义索引错误
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';

$conn = new mysqli('Azure server URL', 'Username','Password', 'tableName');
// 检查数据库连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 使用预处理语句,避免SQL注入并修正语法
$sql = "INSERT INTO data (id, name, email) VALUES (NULL, ?, ?)";
$stmt = $conn->prepare($sql);
// "ss"表示两个参数均为字符串类型
$stmt->bind_param("ss", $name, $email);

if ($stmt->execute()) {
    echo "data inserted";
} else {
    // 输出具体错误信息,便于排查问题
    echo "failed: " . $stmt->error;
}

// 关闭语句与连接
$stmt->close();
$conn->close();
?>

3. 额外调试建议

  • 在PHP开头添加错误提示代码,能直接看到连接失败、SQL语法错误等具体信息;
  • 将Ajax的alert(data)替换为console.log(data),在浏览器控制台查看返回内容更清晰;
  • 确认Azure数据库防火墙已允许你的本地IP地址访问(Azure SQL需手动添加允许的IP规则)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:02:41