连接值时,SQL返回数组字而不是值

时间:2016-06-30 03:49:16

标签: mysql sql arrays row

我有一个表orders,其中有一个用户选择的列表,它们存储在list

TABLE orders
userid |  theorder  |   price  
-------------------------------
  20   | Cigar      |  5.00
  20   | Beer       |  6.00
  20   | Whiskey    |  20.00
  20   | Bacon      |  10.00
  21   | Beer       |  10.00
  21   | Bacon      |  10.00
  22   | Cigar      |  10.00

还有一个名为confirmation的新表,我希望连接所有用户选择!问题是该列正在输出许多数组'话!

这是我想要的:

TABLE confirmation
userid |             list            |   price
-------------------------------------------------
   20  | Cigar, Beer, Whiskey, Bacon |  41.00
   21  | Beer, Bacon                 |  20.00
   22  | Cigar                       |  10.00

以下是实际问题:

TABLE confirmation
userid |             list            |   price
-------------------------------------------------
   20  | Array, Array, Array, Array  |  41.00
   21  | Array, Array                |  20.00
   22  | Array                       |  10.00

以下是我使用

的代码
$sql      = "SELECT theorder FROM orders WHERE userid='$userID'";
$result   = $conn->query($sql);
$getOrder = $result->fetchAll(PDO::FETCH_ASSOC);

$sql = "INSERT INTO confirmation (list, userid) SELECT GROUP_CONCAT('$getOrder' SEPARATOR ', '), '$userID' FROM orders";
$result = $conn->query($sql);
  

注意:我已尝试使用foreach函数,但它输出的行数与#34;数组相同"字的价值!

1 个答案:

答案 0 :(得分:2)

您可以使用一个查询来执行此操作;)

INSERT INTO confirmation (list, userid, price)
SELECT
    GROUP_CONCAT(theorder SEPARATOR ', '),
    userid,
    sum(price)
FROM orders
WHERE userid='$userID'
GROUP BY userid