【问题标题】:MYSQL Why While loop returns first record two times? [closed]MYSQL 为什么 While 循环返回第一条记录两次? [关闭]
【发布时间】:2013-05-22 11:49:39
【问题描述】:

我的数据库中有两条记录,我想将它们打印出来。 所以我写了这个:

<?php
$resDB = mysql_connect("localhost", "root", "");
mysql_select_db("xe", $resDB);


 $aco = mysql_query("SELECT * FROM members WHERE member_id IN (SELECT member_id FROM      pfields_content WHERE TRIM(field_12) IS NOT NULL)  ");
while ($row = mysql_fetch_array($aco))
{

$query1 = mysql_query("SELECT member_id FROM pfields_content WHERE TRIM(field_12) IS NOT NULL LIMIT 1");
$memberID = mysql_fetch_row($query1);

echo $memberID[0];
echo '<br>';




}
?>

而不是两条记录(成员ID):

1 2

两次打印第一条记录(会员ID):

1 1

有人可以帮帮我吗?

【问题讨论】:

  • 您运行完全相同的查询两次并打印相同的值。 (除了使用其结果数作为循环和运行内部查询的次数外,您永远不会对外部查询的结果做任何事情。
  • 而循环内的数据库查询在性能方面通常是一个非常糟糕的主意。熟悉 JOIN 并了解如何通过一次查询获得所需的所有数据。 (具体如何,取决于您的数据模型。)

标签: mysql loops while-loop


【解决方案1】:

这两个查询之间不相关,因此您将有两个结果,因为您的第一个查询找到两个匹配行,因此它循环两次,而从第二个查询您将始终获得相同的值,因为它每个循环执行一次。我建议删除第二个查询并直接打印第一个查询的结果,这样您就可以打印两个不同的 id

$aco = mysql_query("SELECT * FROM members WHERE member_id IN (SELECT member_id FROM      pfields_content WHERE TRIM(field_12) IS NOT NULL)  ");
while ($row = mysql_fetch_array($aco))
{
    echo $row['member_id']; // or whatever your column name is
}

否则,您可以使用从第一个查询中选择的成员 ID,并在第二个查询中使用 WHERE 子句将结果限制为仅 member_id = '$row['member_id']

那么我想记住你 mysql_ 函数已被弃用,所以我建议你切换到 mysqliPDO

【讨论】:

  • 谢谢先生!现在我明白了:)
  • @user2405957 欢迎您!不要忘记接受答案并投票以帮助将来遇到类似问题的人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2017-11-09
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多