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提前!
答案 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
子句的位置,强制在获取新行之前运行循环代码。