MYSQL为什么While循环返回第一条记录两次?

时间:2013-05-22 11:49:39

标签: mysql loops while-loop

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

<?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

有人能帮助我吗?

1 个答案:

答案 0 :(得分: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