微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql_fetch_assoc在WHILE循环中仅可进行一次迭代

如何解决mysql_fetch_assoc在WHILE循环中仅可进行一次迭代

| 请考虑以下几点:
$query = \"SELECT legIDs FROM trip\";
$result = MysqL_query($query) or die(\"SELECT TRIPS ERROR: \" . MysqL_error());
while($row = MysqL_fetch_assoc($result) or die(\"fetch error \" . MysqL_error())) {
    echo \"<div style=\\\"border: 1px solid blue;float:left;\\\">Trip: <div style=\\\"float:right;\\\">\";
    $legID = explode(\",\",$row[\'legIDs\']);
        foreach($legID as $leg) {
            $query = \"SELECT dep,arr FROM leg WHERE `Key` = \" . $leg;
            $result = MysqL_query($query) or die(\"SELECT LEGS ERROR: \" . MysqL_error());
            $row2 = MysqL_fetch_assoc($result) or die(\"FILL ARRAY ERROR: \" . MysqL_error());
            echo $row2[\'dep\'] . \" - \" . $row2[\'arr\'] . \"<br />\";
    }
    echo \"</div></div>\";
}
由于某种原因,即使从“ 1”循环返回了多个值,它也仅返回一个结果。
FOREACH()
循环适用于返回的第一行。我做错了什么,只有这个返回一行?直接在服务器上执行ѭ3中包含的查询将返回几行。     

解决方法

        您在内部和外部循环中使用了两次“ 3”。当内部循环完成时,$ result将是一个“空”结果集,因此外部循环将终止。将内循环更改为
$result2
,一切应该没问题。 但是,由于内部循环只是根据外部循环产生的内容获取更多结果,因此您应该考虑将其重写为联合查询。运行单个“大结果”查询的效率要比一系列“小结果”单个查询的效率更高。最终,解析/编译每个内部查询的开销相当大。     ,        那里的东西很乱。
while($row = mysql_fetch_assoc($result) or die(\"FETCH ERROR: \" . mysql_error()))
不需要7英镑。如果
mysql_fetch_assoc
返回
false
,则
while
循环应该结束了,您也不需要也
die
。 通常,通过在原始查询中使用更好的JOIN或进行更智能的辅助查询,可以更好地处理基于其他SQL查询的循环内的SQL查询。 您正在覆盖内循环中外循环的
$result
变量,这可能是您要询问的特定问题的原因。 您应该将数据获取与输出分开。首先进行查询以获取所有必要的数据,然后将其输出到
<div>
s。表示逻辑和后端逻辑的混合变得非常混乱。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。