簡體   English   中英

如何將數組值插入不同的 MySQL 列

[英]How to insert array values to different MySQL column

我有一個數組,其中包含我定義為$multipleDir多個圖像目錄。

我還有名為product表,其中包含以下結構:

CREATE TABLE `product` (
  `id` int(255) NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` varchar(10000) NOT NULL,
  `mainimage` varchar(100) NOT NULL,
  `image1` varchar(100) NOT NULL,
  `image2` varchar(100) NOT NULL,
  `image3` varchar(100) NOT NULL,
  `image4` varchar(100) NOT NULL,
  `image5` varchar(100) NOT NULL,
  `image6` varchar(100) NOT NULL,
  `price` int(100) NOT NULL,
  `date` date NOT NULL,
  `tags` varchar(1000) NOT NULL
)

$multipleDir包含 6 個不同的圖像目錄。 我的目標是從數組中將他自己的目錄插入到每個圖像列中。

意義:

Image1 column -> upload/image1.jpg 
Image2 column -> upload/image2.jpg 
Image3 column -> upload/image3.jpg
and so on..

我的插入代碼:

"INSERT INTO product (name, description, mainimage, image1, image2, image3, image4, image5, image6, price, date, tags) VALUES ('". $productName ."', '". $productDescription ."', '". $newfilename ."', 'test', 'test', 'test', 'test', 'test', 'test', '". $price ."', '". $date ."', '". $tag ."')";

每個“測試”代表我要應用的圖像目錄。

我嘗試遵循foreach的邏輯,但這似乎是錯誤的方法,因為我無法控制每個列中將包含哪個值。

如何將數組值插入不同的 MySQL 列?

我的 foreach 方法:

foreach($multipleDir as $dir){
    $sql = "INSERT INTO product (name, description, mainimage, image1, image2, image3, image4, image5, image6, price, date, tags) VALUES ('". $productName ."', '". $productDescription ."', '". $newfilename ."', '".$dir."', '".$dir."', '".$dir."', '".$dir."', '".$dir."', '".$dir."', '". $price ."', '". $date ."', '". $tag ."')";
}

刪除 foreach 並通過 $multipleDir[0]...$multipleDir[5] 使用 $multipleDir 數組

$sql = "INSERT INTO product (name, description, mainimage, image1, image2, image3, image4, image5, image6, price, date, tags) VALUES ('". $productName ."', '". $productDescription ."', '". $newfilename ."', '".$multipleDir[0]."', '".$multipleDir[1]."', '".$multipleDir[2]."', '".$multipleDir[3]."', '".$multipleDir[4]."', '".$multipleDir[5]."', '". $price ."', '". $date ."', '". $tag ."')";

您可以使用內置的vsprintf()函數來創建您的查詢:

    $multipleDir = array(
        'upload/image1.jpg',
        'upload/image2.jpg',
        'upload/image3.jpg',
        'upload/image4.jpg',
        'upload/image5.jpg',
        'upload/image6.jpg'
    );
    $query = vsprintf(
        "INSERT INTO product (name, description, mainimage, image1, image2, image3, image4, image5, image6, price, date, tags) VALUES ('". $productName ."', '". $productDescription ."', '". $newfilename ."', '%s', '%s', '%s', '%s', '%s', '%s', '". $price ."', '". $date ."', '". $tag ."')",
        $multipleDir
    );
    echo $query;

輸出:

INSERT INTO product (name, description, mainimage, image1, image2, image3, image4, image5, image6, price, date, tags) VALUES ('', '', '', 'upload/image1.jpg', 'upload/image2.jpg', 'upload/image3.jpg', 'upload/image4.jpg', 'upload/image5.jpg', 'upload/image6.jpg', '', '', '')

當然,生成的 SQL 查詢中的其他值是空的,因為我沒有初始化這些變量。

希望這可以幫助。

PS namedate是 MySQL 中的保留字,因此最好在查詢中使用所有名稱周圍的反引號,例如:

INSERT INTO `product` (`name`, `description`, `mainimage`, `image1`, `image2`, `image3`, `image4`, `image5`, `image6`, `price`, `date`, `tags`) VALUES ...

暫無
暫無

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

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