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

HTML表单上传图片至本地数据库失败:$_FILES无法获取图片

问题解决:图片无法存入MySQL数据库

核心错误分析

你代码中获取图片内容的逻辑完全错误:

$img = file_get_contents($_FILES['myimage']['name']);

$_FILES['myimage']['name']是用户上传文件的原始文件名,并非服务器临时存储文件的实际路径。正确的做法是使用$_FILES['myimage']['tmp_name'],这是PHP接收上传文件后,在服务器临时目录生成的文件路径。

修正后的完整PHP代码

<?php
$host = "localhost";
$dbUserName = "root";
$password = "";
$dbname = "mydb";

// 先检查文件上传是否出现错误
if ($_FILES['myimage']['error'] !== UPLOAD_ERR_OK) {
    die("文件上传失败,错误码:" . $_FILES['myimage']['error']);
}

// 读取服务器临时文件中的图片内容
$img = file_get_contents($_FILES['myimage']['tmp_name']);
$fname = $_POST['fname'];

// 开启错误报告模式
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// 建立数据库连接
$conn = mysqli_connect($host, $dbUserName, $password, $dbname);

// 准备插入SQL语句
$sql = $conn->prepare("INSERT INTO mytable (image_soldier, fname_soldier) VALUES (?, ?)");
// 绑定参数:b对应二进制类型,s对应字符串类型
$sql->bind_param("bs", $img, $fname);
// 执行插入操作
$sql->execute();

echo "数据插入成功";
?>

额外必查项

  • 数据库字段类型:确保image_soldier字段的类型为MEDIUMBLOB或LONGBLOB,普通BLOB仅支持最大64KB存储,绝大多数图片都会超出这个限制。
  • PHP配置限制:检查php.ini中的upload_max_filesize和post_max_size参数,将其设置为足够容纳目标图片的大小(例如10M)。
  • 文件有效性验证:后端可通过getimagesize()函数判断上传文件是否为有效图片,避免恶意文件被存入数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:10:13