【发布时间】:2015-01-01 22:00:08
【问题描述】:
我目前非常困惑为什么我无法将一组图像插入到我的数据库中。 到目前为止,我当前的多文件上传能够将图像上传到我的默认目录,并且只能将第一张图像存储到我的 SQL Server 数据库中,为什么会这样? foreach 命令不应该能够拆分我上传的所有多个文件并将它们分别存储到数据库中吗?请大家多多指教,谢谢!
HTML 代码
<form method="post" enctype="multipart/form-data" action="">
<input type="file" name="files[]" id="files" multiple />
<br /><br />
<button type="submit">Upload selected files</button>
PHP 代码
foreach ($_FILES["files"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$name = $_FILES["files"]["name"][$key];
move_uploaded_file($_FILES["files"]["tmp_name"][$key], "" . $_FILES['files']['name'][$key]);
$sql = "INSERT INTO `test`(`image`) VALUES ('" . $name . "')";
$result = mysqli_query($connection, $sql);
echo "The file " . basename($_FILES['multiple_uploaded_files']['name']) . " has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
}
干杯, 正在学习的技术新手。
【问题讨论】:
-
你是说所有上传的图片都被上传并移动到适当的位置,但只有第一个的名称被存储到数据库中?
-
我已经在 localhost 上尝试过了,它应该可以工作,我在您的代码中没有看到任何错误。只有这一行:
$_FILES['multiple_uploaded_files']$_FILES 中没有这样的键。应该是:basename($_FILES['files']['name'][$key]) -
使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 不要使用字符串连接来完成此操作,因为您将创建严重的SQL injection bugs。 -
致:Shomz,回答你的问题,是的!我也不明白为什么要:lolka_bolka,是的,我也不明白为什么它不起作用,按理说它应该:)