使用WAMP服务器时PHP代码无法向MySQL插入数据,求排查错误
排查你的PHP插入MySQL失败问题
嘿,我仔细看了你的代码,发现几个核心问题导致数据无法存入数据库,咱们逐个解决:
主要问题分析
- SQL语法错误:你在INSERT语句里误用了PHP的
array_values()函数——这是PHP的数组处理函数,不能直接写在SQL语句中!SQL插入数据应该用VALUES关键字来指定值列表。 - 未验证数据库连接:你只写了连接代码,但没有检查连接是否成功,万一用户名、密码或数据库名有误,你根本无法察觉。
- 无错误反馈机制:
mysqli_query执行失败时,你没有输出任何错误信息,这会让你完全不知道问题出在哪。 - SQL注入风险:直接将用户输入的POST参数拼接到SQL语句中,存在严重的安全隐患,容易被SQL注入攻击。
修正后的完整代码
<?php // 连接数据库并检查连接状态 $con = mysqli_connect('localhost', 'root', '', 'my_first_database'); if (!$con) { die("数据库连接失败: " . mysqli_connect_error()); } if (isset($_POST['submit'])) { // 获取表单数据并做简单过滤 $name = trim($_POST['name']); $fname = trim($_POST['fname']); $city = trim($_POST['city']); // 使用预处理语句避免SQL注入,同时保证语法正确 $sql = "INSERT INTO student_record(Name, Fname, city) VALUES (?, ?, ?)"; $stmt = mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, "sss", $name, $fname, $city); // 执行语句并反馈结果 if (mysqli_stmt_execute($stmt)) { echo "数据提交成功!"; } else { echo "数据提交失败: " . mysqli_error($con); } // 关闭语句和连接 mysqli_stmt_close($stmt); } mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <title>数据录入</title> </head> <body> <form method="post"> <input type="text" name="name" placeholder="姓名" required><br> <input type="text" name="fname" placeholder="父亲姓名" required><br> <input type="text" name="city" placeholder="城市" required><br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
额外注意事项
- 确认你的MySQL数据库中存在
student_record表,且字段Name、Fname、city的拼写(注意:MySQL在Linux环境下区分表名/字段名大小写,Windows环境不区分)和数据类型与你的输入匹配。 - 确保WAMP的MySQL服务处于运行状态(可以在WAMP管理器中查看MySQL的状态标识)。
- 预处理语句里的
"sss"表示三个参数都是字符串类型,如果你的字段是其他类型(比如整数),要对应修改参数类型标识(比如"sis"表示字符串、整数、字符串)。
内容的提问来源于stack exchange,提问作者nabeel
相关产品推荐
相关产品推荐

