循环时显示变量

时间:2012-08-14 07:38:54

标签: while-loop

HY。我知道有类似的答案,但我无法得到它。这是我的鳕鱼:

<?php include 'header.php'; ?>
<?php include 'connect.php';

$q = mysqli_query($link, $aaa = 'SELECT * FROM agentii LEFT JOIN orase ON agentii.oras=orase.oras_id WHERE orase.oras_id = \'' .$_GET['id']. '\'') or die(mysqli_error($link));
$row = mysqli_fetch_assoc($q);
?>

<h2>Title <em><?php echo $row['oras'];?></em></h2>

<div class="div_view">
    <table cellspacing="0" cellpadding="5" border="0" width="100%">
        <tr>
            <th>Agentie</th>
            <th>Adresa</th>
        </tr>

        <?php while ($row = mysqli_fetch_assoc($q)) { ?>

        <tr>
            <td><?php echo $row['agentie'];?></td>
            <td><?php echo $row['adresa'];?></td>
        </tr>

        <?php }?>

    </table>
</div>

<?php include 'footer.php'; ?>

这个输出(我不能把图像因为是一个新帐户 - 所以我把一个链接到一个prt src): http://postimage.org/image/w9zsexz91/

在我的数据库中,我有3行,代码只输出2。 我知道这是因为2 mysqli_fetch_assoc,但我想显示所有行,我想在此时间之外显示标题(<?php echo $row['oras'];?>)。

有人可以帮我这个吗? Thx提前!

2 个答案:

答案 0 :(得分:1)

必须警告首先:记住小Bobby Tables! (或者:您的代码容易受到SQL注入攻击)

然后:在while循环中只获得两行,因为您首先在循环外请求了一行,从而增加了结果中的内部游标。

如果您想一次性获取标题和行,则需要缓存结果,例如:

$resultArray = array();
while ($row = mysqli_fetch_assoc($q)) {
  $resultArray[] = $row;
}
//....
?>
<h2><?php echo $resultArray[0]['oras']; ?></h2>

<?php // ... ?>

<?php foreach($resultArray as $row) {
  <tr>
    <td><?php echo $row['agentie'];?></td>
    <td><?php echo $row['adresa'];?></td>
  </tr>
} ?>

这只是一个存根,当然你应该实现检查,如果你有一行等......

答案 1 :(得分:0)

尝试:

<?php do { ?>

<tr>
    <td><?php echo $row['agentie'];?></td>
    <td><?php echo $row['adresa'];?></td>
</tr>

<?php } while ($row = mysqli_fetch_assoc($q)); ?>

此循环的第一次迭代将打印第一个获取的行。我只更改了while子句的位置,强制在获取新行之前运行循环代码。