如何从mysql数据库中插入多行图像?

时间:2016-03-18 08:29:20

标签: php mysql database insert

我需要用户通过表单将多个图像插入数据库。我成功地插入了一个图像。这是代码:

$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>

1 个答案:

答案 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