无法将JSON数据插入MySQL,如何提取指定JSON数组并修正插入代码?
问题解决:提取JSON员工数据并插入MySQL
一、提取目标员工数组
原JSON结构中,员工数据嵌套在Message字段下,解析后直接调用$array['Message']就能得到你需要的数组:
$data = file_get_contents("employee_data.json"); $array = json_decode($data, true); // 提取员工数组,对应你要求的JSON结构 $employeeList = $array['Message'];
二、修正插入代码(修复错误+规避SQL注入)
原代码存在两处关键问题:ysqli_connect拼写错误,以及直接拼接变量到SQL语句的SQL注入风险,以下是完整修正后的可运行代码:
<?php // 修复拼写错误:ysqli_connect → mysqli_connect $connect = mysqli_connect("localhost", "root", "", "test"); // 检查数据库连接状态 if (!$connect) { die("连接失败: " . mysqli_connect_error()); } $filename = "employee_data.json"; $data = file_get_contents($filename); $array = json_decode($data, true); // 获取目标员工数组 $employees = $array['Message']; // 使用预处理语句,彻底避免SQL注入 $stmt = mysqli_prepare($connect, "INSERT INTO tbl_employee(name, gender, designation) VALUES (?, ?, ?)"); // 绑定参数(sss表示三个字符串类型参数) mysqli_stmt_bind_param($stmt, "sss", $name, $gender, $designation); // 遍历员工数组执行插入 foreach ($employees as $row) { $name = $row["name"]; $gender = $row["gender"]; $designation = $row["designation"]; mysqli_stmt_execute($stmt); } // 清理资源 mysqli_stmt_close($stmt); mysqli_close($connect); echo "数据插入完成"; ?>
核心说明
- 数组提取:无需额外处理JSON字符串,直接通过键名
Message即可获取嵌套的员工数据数组 - 安全规范:使用预处理语句绑定参数,避免直接拼接变量引发的SQL注入风险
- 错误排查:增加连接状态检查,方便快速定位数据库连接问题
内容的提问来源于stack exchange,提问作者Kimhab
相关产品推荐
相关产品推荐

