gpt4 book ai didi

php - MySQL while循环查询在其他while循环查询中

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

<?php

include 'config.php';

$conn = mysql_connect("$hostname", "$username", "$password") or die ("Failed to connect to DB.");

mysql_select_db("$dbname",$conn);

$sql="SELECT * FROM opdrachten";
$result=mysql_query($sql,$conn);

while ($row= mysql_fetch_array($result))
{
echo $row['name'];
echo "<br>";
$opdrachtid = $row["id"];

$sql2="SELECT * FROM resultaten WHERE(opdrachtid='".$opdrachtid."')";
$result2=mysql_query($sql2,$conn);

while ($row2= mysql_fetch_array($result2))
{
echo "
<li>
<a href=\"result.php?id=".$row2["id"]."\">
<img src=\"".$row2["img"]." \"width=\"150\" height=\"150\">
<div><span>TEXT HERE</span></div>
</a>
</li>";
}


}
?>

我想要我的代码做的是(在一个循环中):

  1. 从表“opdrachten”中获取所有行并回显它们的“名称”。
  2. 从“opdrachten”中的每一行中获取“id”> 存储在变量 $opdrachtid 中
  3. 从表“resultaten”中获取行,其中“opdrachtid == $opdrachtid”(我刚刚存储)
  4. 回显从 3 获取的行中的“id”和“img”。

我想在我的页面上看到的内容:

  1. 表“opdrachten”中“opdrachten”(目标)的名称正下方
  2. 分配给这些目标的图像(其 url 存储在表 'resultaten' 中)(WHERE opdrachten.id = resultaten.opdrachtid)

我已经研究了 JOIN,因为这是我在这里阅读的大多数相关主题的答案,但这似乎不是我正在寻找的,因为我在第一时间回应并声明用于第二个查询的变量。

使用的表:

'结果'编号 |蜾蠃 |姓名

'opdrachten'编号 |姓名

同样,resultaten.opdrachtid == opdrachten.id

提前致谢,感谢您的帮助:)

最佳答案

我肯定会建议在这里使用 JOIN,这样您就可以一次获得所有这些数据。但是,我要添加一个警告 - 这将占用更多内存,而不是像您当前正在做的那样在循环中查询数据库,因此如果您在任一表中都有大量行,这可能不是合适的方法。

查询只是:

SELECT * FROM opdrachen
INNER JOIN resultaten ON opdrachen.id = resultaten.opdrachenid

然后您可以像这样非常简单地设置一个以每个 id 为键的数组:

$array = array();
while ($row = mysql_fetch_array($result)) {
$array[$row['id']][] = $row;
}

这为您提供了一种简单的方法来遍历结果,一次一个 id:

foreach ($array as $id => $rows_for_id) {
// output stuff for row group
foreach ($rows_for_id as $resultaten_row) {
// output stuff for resultaten rows
}
}

其他一些建议:

  • 不要使用 mysql_* 函数,因为它们已被弃用。了解如何使用 mysqli 或 PDO。
  • 不要使用SELECT * 查询。它很懒惰,会浪费带宽、传输时间和系统内存。仅查询您实际感兴趣的特定字段。因此请将我示例中的 * 替换为您实际需要的字段。

关于php - MySQL while循环查询在其他while循环查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560239/

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