【问题标题】:When concatenating values, SQL returns the array word instead of values连接值时,SQL 返回数组单词而不是值
【发布时间】:2016-06-30 03:49:16
【问题描述】:

我有一个表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 函数,但它会输出许多具有相同“数组”字值的行!

【问题讨论】:

    标签: mysql sql arrays row


    【解决方案1】:

    您可以使用一个查询来做到这一点;)

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

    【讨论】:

      猜你喜欢
      • 2019-01-17
      • 2020-08-22
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2023-04-10
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多