【发布时间】:2015-09-16 02:23:21
【问题描述】:
我正在尝试编写一个 INSERT SQL 请求以使用多维数组填充我的数据库表。
该数组使用会话变量(它是一个购物车)$_SESSION['panier'],目前有以下内容:
array (size=3)
'ARTCOD' =>
array (size=2)
0 => string 'NA1818BLCFEZ' (length=12)
1 => string 'SER5151BLCFEZ' (length=13)
'COLLIB' =>
array (size=2)
0 => string 'blanc' (length=5)
1 => string 'blanc' (length=5)
'quantite' =>
array (size=2)
0 => int 6
1 => int '8'
我的表有更多字段: 'ID' 字段,需要自动递增。
'reference'字段,包含订单的引用,我会随机生成。
'ARTCOD' 字段,它是与文章关联的代码,在 $_SESSION['panier']['ARTCOD'] 中。
'CLICOD' 字段,它是与正在订购的客户相关联的代码,这里它在 $_SESSION['CLICOD'] 中。
$_SESSION['panier']['quantite']中包含的'quantite'字段,即订购商品的数量。
'type'字段,包含订单类型,这里只是一个定义的词,不会改变。
还有“日期”字段,包含订单的时间戳。
所以我需要帮助来编写一个无需使用多个 INSERT 即可生成我的 MySQL 请求的函数。
我已经创建了这个:
$query = "";
for ($i = 0; $i < count($_SESSION['panier']['ARTCOD']); ++$i) {
$query .= 'INSERT INTO commandevalide (id, reference, ARTCOD, CLICOD, quantite, type, date) VALUES ("", "'.$_SESSION['panier']['ARTCOD']['$i'].'", "'.$reference.'", "'.$_SESSION['CLICOD'].'", '.$_SESSION['panier']['quantite']['$i'].', "Location", now());';
}
但我更喜欢只给出一个 INSERT 请求的东西。
我看到我需要使用 implode 函数和一个 foreach 循环,但我没有设法创建一些有效的东西。
【问题讨论】:
-
您使用的是什么数据库驱动程序? PDO?
mysqli?希望不是糟糕的mysql_query。 -
你的问题是......?
-
@tadman : 我使用 Mysqli。
-
@Marc B : 我编辑了我的帖子,我只需要帮助来编写将生成 SQL 请求而不使用多个 INSERT 的函数
-
你能举一个使用多次插入的代码的例子吗?这将帮助我们确定如何优化您的代码。
标签: php mysql arrays multidimensional-array