[英]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.