Chr*_*ten 0 php mysql while-loop fetch
请考虑以下事项:
$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>";
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这只返回一个结果,即使WHILE()循环返回了多个值.该FOREACH()回路工作在所返回的一行.我做错了什么只让这一行返回?$result直接在服务器上执行包含的查询将返回多行.
你$result在内部和外部循环中使用了两次.当内部循环完成时,$ result将是一个"空"结果集,因此外部循环将终止.选择内循环$result2,事情应该没问题.
但是,由于内部循环只是根据外部循环产生的结果获取更多结果,因此您应该考虑将其重写为连接查询.运行单个"大结果"查询几乎总是比一系列"小结果"单个查询更有效.你最终会有相当大的开销来解析/编译每个内部查询.
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |