繁体   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