gpt4 book ai didi

php - 如何从另一个 mySQL 选择的 foreach 循环内的 mySQL 表中选择数据?

转载 作者:行者123 更新时间:2023-11-29 06:24:15 25 4
gpt4 key购买 nike

我想知道,如果你有更聪明的解决方案:

<table>
<thead>
<tr>
<th>Person</th>
<th>Country</th>
<th>Colors</th>
<th>Number</th>
</tr>
</thead>
<tbody>

<?php
$pdo = Database::connect();
$sql = "SELECT * FROM people ORDER BY timestamp ASC;" ;

foreach ($pdo->query($sql) as $row) {
$person = $row['person'];
echo '<tr> ';
echo('<td>'.$person.'</td>');
echo('<td>'.$row['country'].' </td>');
echo('<td>');
$sql2 = "SELECT * FROM features WHERE person = '$person' ORDER BY colors ASC;" ;
foreach ($pdo->query($sql2) as $row) {
echo($row['colors'].'<br>');
}
echo('</td>');
echo('<td>'.$row['Number'].' </td>');
echo '</tr> ';
}
Database::disconnect();
</tbody>
</table>

所以我希望实现的是,在一行中我想显示我的表 features 的所有 colors 与我的表 people 具有相同的人名:

Person   Country   Colors    Number 
===================================
Tom France red 12
green
blue

我知道我这样做的方式不是一个好方法,但我不知道如何用另一种方式来做。因为在我解决它的方式中,我得到了以下结果:

Person   Country   Colors    Number 
===================================
Tom France red
green
blue

最佳答案

更改第二个查询的变量名称 ($row)。它已被覆盖

$sql2 = "SELECT  *  FROM features WHERE person = '$person' ORDER BY colors ASC;" ;
foreach ($pdo->query($sql2) as $row_sec) {
echo($row_sec['colors'].'<br>');
}

更好的方法是使用 JOIN 在单个查询中获取所有数据。相应地构建数组 或使用GROUP_CONCAT 并打印数据。这个例子是 -

$sql = "SELECT  p.*, GROUP_CONCAT(f.colors) colors FROM people
LEFT JOIN features f ON f.person = p.person
GROUP BY p.person
ORDER BY timestamp ASC;" ;
foreach ($pdo->query($sql) as $row) {

echo '<tr> ';
echo('<td>'.$row['person'].'</td>');
echo('<td>'.$row['country'].' </td>');
echo('<td>');
echo(implode('<br/>', explode(',', $row['colors'])));
echo('</td>');
echo('<td>'.$row['number'].' </td>');
echo '</tr> ';

}

关于php - 如何从另一个 mySQL 选择的 foreach 循环内的 mySQL 表中选择数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936456/

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