簡體   English   中英

在數據庫的單行中插入多個圖像名稱

[英]Insert multiple image name in a single row in database

伴侶請幫助我解決此問題。 我已經從中創建了一個可以從其中多個圖像插入數據庫的單行的代碼,現在我的代碼運行良好,但是不可能將所有圖像存儲在存儲在多行中的單個數據庫行中。 在這里,我所做的事情到目前為止。

<?php
mysql_connect("localhost","root","");
mysql_select_db("test");



$uploads_dir = 'photo/';
foreach ($_FILES["image"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["image"]["tmp_name"][$key];
        $name = $_FILES["image"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
        $sql=mysql_query("INSERT INTO multiimg SET image='$name'");
    }
}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
function addmore(num)
{
    if(num==1)
    {
        document.getElementById('field2').style.display='block';
        document.getElementById('ni1').style.display='block';
        return false;
    }
    else if(num==2)
    {
        document.getElementById('field3').style.display='block';
        return false;
    }

}
</script>
</head>

<body>
<form enctype="multipart/form-data" name="" action="" method="post">
    <div id="field1">Enter One Image :<input type="file" name="image[]" id="img1"/><a href="#" onclick="addmore(1)" id="ni1">addmore...</a></div>
    <div id="field2"  style="display:none;">Enter Two Image :<input type="file" name="image[]" id="img2"/><a href="#" onclick="addmore(2);">add more...</a></div>
    <div id="field3"  style="display:none;">Enter Three Image :<input type="file" name="image[]" id="img3"/><a href="#" onclick="addmore(3)" id="ni3">addmore...</a></div>
    <div id="field4" style="display:none">Enter Forth Image :<input type="file" name="image[]" id="img4"/><a href="#" onclick="addmore(4)" id="ni4">addmore...</a></div>

    <input type="submit" name="submit"/>

</form>

</body>
</html>

在此處輸入圖片說明

您可以使用serialize()函數將多個圖像名稱存儲在單行中。 使用以下代碼:

$uploads_dir = 'photo/';

$imageArr = array();

foreach ($_FILES["image"]["error"] as $key => $error) {

if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["image"]["tmp_name"][$key];
    $name = $_FILES["image"]["name"][$key];
    move_uploaded_file($tmp_name, "$uploads_dir/$name");
    array_push($imageArr,$name);
}

}

$imageArr=serialize($imageArr);

$sql=mysql_query("INSERT INTO multiimg SET image='".$imageArr."'");

After that use unserialize() function,this will show the array of that multiple image. user the bellow code:

$sql1=mysql_query("Select * from multiimg");

$result=mysql_fetch_assoc($sql1);

print_r(unserialize($result['image'])); 

試試下面的代碼

$images_name ="";
    foreach ($_FILES["image"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["image"]["tmp_name"][$key];
            $name = $_FILES["image"]["name"][$key];
            move_uploaded_file($tmp_name, "$uploads_dir/$name");
            $images_name =$images_name.",".$name;
        }
    }

    $sql=mysql_query("INSERT INTO multiimg(image) values('".$images_name."')");

提示代碼不正確

您的循環並為多個圖像名稱運行循環並將其存儲在單個變量中

   foreach( $_FILES["image"]["name"] as $key=>$value){
    $name .=$value;
  }

  $sql=mysql_query("INSERT INTO multiimg (`fieladname`) VALUES (insertField));

這將在所有行中存儲相同的名稱,希望這能解決您的問題

您可以通過兩種方式來實現此目的,即通過串聯@Miya和@Affan回答的圖像名稱,或為每個圖像創建單獨的列。

我將解釋第二種方法。

您有四個固定的圖片上傳按鈕。 因此,與其在數據庫表中沒有單列“圖像”,您還可以有四列分別用於單獨的圖像。

所以你的表架構將是

id   |   image1   |   image2   |   image3   |   image4 

現在,您可以使用單個插入查詢將所有圖像插入,

$uploads_dir = 'photo/';
$name = array();
$i=1;
foreach ($_FILES["image"]["error"] as $key => $error) {
    $name[$i] == "";
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["image"]["tmp_name"][$key];
        $name[$i] = $_FILES["image"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
        $sql=mysql_query("INSERT INTO multiimg SET image='$name'");
    }
    $i++;
}
$sql=mysql_query("INSERT INTO multiimg (`image1`,`image2`,`image3`,`image4`) VALUES ('$name[1]','$name[2]','$name[3]','$name[4]')");

我建議您使用這種方法,因為將來如果您要獲取圖像名稱,它將比第一種方法插入的值容易。

嘗試這樣的事情:

$uploads_dir = 'photo/';
$imageArr = array();
foreach ($_FILES["image"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["image"]["tmp_name"][$key];
        $name = $_FILES["image"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
        array_push($imageArr,$name);
    }
}
$sql=mysql_query("INSERT INTO multiimg SET image='".json_encode($imageArr)."'");

從數據庫中選擇圖像后,可以使用json_decode將圖像存儲在數組中。

       $img[$i] = array();            
       $uploads_dir = "images/";
       $i=1;
       foreach ($_FILES["image"]["error"] as $key => $error)
        {
         $name[$i] == "";
         if  ($error == UPLOAD_ERR_OK) {
              $tmp_name = $_FILES["image"]["tmp_name"][$key];
              $img[$i] = $_FILES["image"]["name"][$key];
              move_uploaded_file($tmp_name, "$uploads_dir/$img[$i]");
                                       }
              $i++;
        }
    $sql1 = "INSERT INTO event(img1,img2,img3) VALUES('$img1','$img2','$img3')";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM