PHP while-for 嵌套循环不显示所有 MySQL 结果

标签 php mysql for-loop while-loop

我已经浏览了一些关于此问题的其他答案,但它们似乎没有解决我的特定问题(或者我编码错误,这也是可能的)。

我知道我的 SQL 代码工作正常,因为我得到了全部 19 行输出,但是当我将其输出到 PHP 页面时,该页面少了 5 行。

如果我不尝试通过任何方式在三列中显示结果(并且仅使用一列),则所有内容都会显示。当我尝试按“X”执行三个操作时,它就会开始切断结果。

这是我旧的、无法运行的 PHP 代码:

$fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());

while($row = mysql_fetch_array($fleet_query_results)) {
    $display_fleet .= "<tr>";

    for($i = 1; $i < 4 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];

        $display_fleet .= "
            <td valign=\"top\"><div id=\"fleet\"><div id=\"fheader\">$ship_info</div><br/><img align=\"center\" height=\"210\" width=\"350\" alt=\"$ship_name\" src=\"$ship_link\" /><br /><div id=\"fmem\">$mem_info</div></div></td>
        ";
    }

    $display_fleet .= "</tr>";
}

有什么想法吗?它正在切断第一、第四、第九、第十三和第十七个结果。

页面结果示例:

<table border="1">
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
</table>

新代码可以工作,但是丑陋:

    $fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());

while($row = mysql_fetch_array($fleet_query_results)) {
    $display_fleet .= "<tr>";
    $ship_info = $row['ship_info'];
    $mem_info = $row['mem_info'];
    $ship_link = $row['ship_link'];

    $display_fleet .= "
        <td valign=\"top\"><div id=\"fleet\"><div id=\"fheader\">$ship_info</div><br/><img align=\"center\" height=\"210\" width=\"350\" alt=\"$ship_name\" src=\"$ship_link\" /><br /><div id=\"fmem\">$mem_info</div></div></td>
    ";

    for($i = 1; $i < 3 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];

        $display_fleet .= "
            <td valign=\"top\"><div id=\"fleet\"><div id=\"fheader\">$ship_info</div><br/><img align=\"center\" height=\"210\" width=\"350\" alt=\"$ship_name\" src=\"$ship_link\" /><br /><div id=\"fmem\">$mem_info</div></div></td>
        ";
    }

    $display_fleet .= "</tr>";
}

最佳答案

您的while正在吃一些数据行。

$fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());
$rows=1;
while($rows) {
    $display_fleet .= "<tr>";

    for($i = 1; $i < 4 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $rows=$row;
        if (!$row) break;
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];

        $display_fleet .= "
            <td valign=\"top\"><div id=\"fleet\"><div id=\"fheader\">$ship_info</div><br/><img align=\"center\" height=\"210\" width=\"350\" alt=\"$ship_name\" src=\"$ship_link\" /><br /><div id=\"fmem\">$mem_info</div></div></td>
        ";
    }

    $display_fleet .= "</tr>";
}

或者,如下所述:

$i=0
while($row = mysql_fetch_array($fleet_query_results)) {

    if( $i % 4 = 0 )
        $display_fleet .= "<tr>";

    $ship_info = $row['ship_info'];
    $mem_info = $row['mem_info'];
    $ship_link = $row['ship_link'];

    $display_fleet .= "
            <td valign=\"top\"><div id=\"fleet\"><div id=\"fheader\">$ship_info</div><br/><img align=\"center\" height=\"210\" width=\"350\" alt=\"$ship_name\" src=\"$ship_link\" /><br /><div id=\"fmem\">$mem_info</div></div></td>
        ";

    if( ++$i % 4 = 0 )
        $display_fleet .= "</tr>\n";

}

// clean add the missing cells to last row.
if( $i % 4 != 0 )
{
    while($i++ %4)
      $display_fleet .= "<td></td>";
    $display_fleet .= "</tr>\n";
}

关于PHP while-for 嵌套循环不显示所有 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661405/

相关文章:

PHP - 提取关联 POST 数据的最佳方式

php - 制作基于模块的社交网络cms

java - 需要从 infile 中取出每个整数并将其传递给方法

mysql - EER 图编辑器不显示列数据和其他信息

python - 这个 Python 循环可以更简洁地表达吗?

c++ - 如何遍历列表但停在 size-1

php - 如何解析这个?

php - 如何匹配Elasticsearch中包含破折号(-)的条目

javascript - 我开发了一个 api,我希望它重定向到其他 php 页面,并在我单击 api 文件中的按钮时弹出模式

mysql - 创建相对于另一个的 SQL 列