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

为何$uploader变量值无法插入MySQL查询?求技术解决方案

问题排查与解决方案

你遇到的问题是$uploader变量的值无法写入MySQL,从执行的SQL语句能看到author字段是空字符串。虽然你确认$author能通过POST获取,但可能存在以下几个问题:

1. 表单提交的完整性问题

确保你的uname输入框和but_upload按钮在同一个<form>表单内,并且表单设置了正确的属性:

  • method="POST"
  • enctype="multipart/form-data"(文件上传必须加这个属性,否则不仅文件无法上传,也可能导致普通表单字段无法正常传递)

如果uname不在提交的表单里,即使你之前能获取到值,点击上传按钮时$_POST['uname']也会是空的,最终导致$uploader为空。

2. 变量调试验证

在代码中添加调试输出,确认变量的实际值:
在$uploader = $author;这一行后面加上:

var_dump($author, $uploader); // 查看变量实际值
exit; // 暂停执行,先看结果

执行上传操作后,查看页面输出,确认$author是否真的有值。如果这里$author是空的,说明表单提交时uname字段没有被正确传递。

3. 修复SQL注入风险(同时避免变量解析问题)

你当前的SQL语句是直接拼接变量,存在严重的SQL注入风险,而且如果变量包含特殊字符(比如单引号),会导致SQL语法错误或变量值无法正确解析。建议改用预处理语句:

修改插入数据的代码部分为:

// 插入记录,使用预处理语句
$query = "INSERT INTO videos(name, location, author) VALUES(?, ?, ?)";
$stmt = mysqli_prepare($con, $query);
mysqli_stmt_bind_param($stmt, "sss", $name, $target_file, $uploader);
mysqli_stmt_execute($stmt);
echo "Upload successfully.";

这样不仅能避免SQL注入,还能确保变量值被正确传递到SQL语句中。

额外检查点

  • 确认config.php中的数据库连接$con是正常的,没有连接错误
  • 检查数据库表videos的author字段是否允许为空,如果设置了NOT NULL但变量为空,插入会失败,但你的情况是插入了空字符串,说明字段允许为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:06:25