我需要用户通过表单将多个图像插入数据库。我成功地插入了一个图像。这是代码:
$insert_sql = "INSERT INTO my_tbl VALUES ('' , \"$image\", \"$title\")";
<form name = "my_form" form action=" " enctype="multipart/form-data" method="post">
<div> Title: <input name="title" type="text" size="50" /></div>
<div"> Image: <input name="classnotes" type="file" value="" id="file"/></div>
<input name='submit' type='submit' id="submit-go" value='Upload'>
</form>
现在我需要插入几张图片,所以我尝试插入至少3张图片,但没有成功。只有最后一个字段的图像插入数据库。无论如何,我需要让它工作。所以,任何帮助都表示赞赏。
<form name = "my_form" form action=" " enctype="multipart/form-data" method="post">
<div> Title: <input name="title" type="text" size="50" /></div>
<div"> Image: <input name="classnotes" type="file" value="" id="file"/></div>
<div> Title: <input name="title" type="text" size="50" /></div>
<div"> Image: <input name="classnotes" type="file" value="" id="file"/></div>
<div> Title: <input name="title" type="text" size="50" /></div>
<div"> Image: <input name="classnotes" type="file" value="" id="file"/></div>
<input name='submit' type='submit' id="submit-go" value='Upload'>
</form>
答案 0 :(得分:3)
问题是使用多个具有相同名称的输入将导致仅发送最后一个。您应该将输入命名为数组,然后在PHP代码中循环遍历数组。
HTML
<div> Title: <input name="title[]" type="text" size="50" /></div>
<div> Image: <input name="classnotes[]" type="file" value="" id="file"/></div>
PHP
$titles = $_POST["title"];
$images = $_FILES["classnotes"]["tmp_name"];
foreach ($images as $index => $image) {
$imageType = $_FILES["classnotes"]["type"][$index];
// check the file type here!!
$title = $titles[$index];
$insert_sql = "INSERT INTO my_tbl VALUES ('' , \"$image\", \"$title\")";
// execute the query here!!
// move the uploaded file here!!
}
@Jklyn你的脚本有很多问题。我编辑了上面的代码片段,让您更好地了解如何重构代码以实现您想要的代码。请注意,您要处理的图像数组,因此每个文件的每个查询或操作都应该在foreach
循环中进行。
了解许多文件的上传如何在PHP中运行:http://php.net/manual/en/features.file-upload.multiple.php