[英]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 name
和date
是 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.