gpt4 book ai didi

php - 从mysql表中获取多个关联行

转载 作者:行者123 更新时间:2023-11-29 08:05:40 25 4
gpt4 key购买 nike

我有一个名为 goods 的表,如下所示。

id |  name   |   type       |    
1 | honda | car |
2 | bianci | bike |
3 | ferari | car |
4 | hurley | motor bike |
4 | bar | motor bike |

我试图从该表中获取一个关联数组,其中数组的索引应该是类型,值应该是名称。最终结果应该是这样的。

array("car"=>"honda", "bike"=>"bianci", "car"=>"ferrari", "motor bike"=>"hurley");

我尝试从商品中选择名称 AS type WHERE type IN ('car', 'bike', 'motor bike')但仍然给出数组的结果索引type

最佳答案

您的查询应如下所示:

  SELECT GROUP_CONCAT(`name`) AS `brand`,
`type`
FROM goods
WHERE `type` IN ('car', 'bike', 'motor bike')
GROUP BY `type`

上述查询的结果类似于:

name            |   type
-------------------------------
honda, ferari | car
bianci | bike
hurley, bar | motor bike
<小时/>

在你的 PHP 上会是这样的:

$result = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$result[$row['type']] = $row['brand'];
}
print_r($result);

由于数组上不能有重复的键,因此通过使用 GROUP BY 对类型进行分组,并使用 GROUP_CONCAT 将名称分组到单个字符串中,我们可以获得结果接近你想要的:

array("car" => "honda, ferrari",
"bike" => "bianci",
"motor bike" => "hurley, bar"
);
<小时/>

另一种方法是:

  SELECT `name`,
`type`
FROM goods
WHERE `type` IN ('car', 'bike', 'motor bike')

在你的 PHP 上会是这样的:

$result = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$result[$row['type']][] = $row['name'];
}
print_r($result);

使用此方法,您可以将类型作为键,将数组作为值,其中包含所有名称,您可以使用 foreach 或任何其他循环轻松读取这些名称:

array("car" => array("honda", "ferrari"),
"bike" => array("bianci"),
"motor bike" => array("hurley", "bar")
);

关于php - 从mysql表中获取多个关联行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22762826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com