【问题标题】:MySQL INSERT with multidimensional php arrayMySQL INSERT 与多维 php 数组
【发布时间】: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


【解决方案1】:

要将所有这些插入合并为一个,您可以试试这个:

$query = "INSERT INTO commandevalide (id, reference, ARTCOD, CLICOD, quantite, type, date) VALUES ";

for ($i = 0; $i < count($_SESSION['panier']['ARTCOD']); ++$i) {
    $query .= '("", "'.$_SESSION['panier']['ARTCOD'][$i].'", "'.$reference.'", "'.$_SESSION['CLICOD'].'", '.$_SESSION['panier']['quantite'][$i].', "Location", now()), ';
}

$query = rtrim($query, ', ');

注意:不要将$i 放在单引号之间。

【讨论】:

  • 好主意,这就像一个魅力!正如我们在法国所说的“谢谢!” :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多