这是我的代码,有问题,因为当我把它放在wamp(chrome)中时,它会返回一个重复的"published by"(对于任何疑问,$conex=mysql_connect('localhost','root'))
<?php
mysql_select_db("spectrum-solaris",$conex);
$query = mysql_query("SELECT id,name,tittle,body FROM articles ORDER BY id DESC",$conex);
$row = mysql_num_rows($query);
if($row > 0 ){
do {
?>
<div class ="tematica" >
<p>
<small>Published by <b><a href="user.php"><?= $row['name'] ?></a></b></small>
</p>
<p>
<big><a href="show.php"><?= $row['tittle'] ?></a></big>
</p>
<p>
<b><?=$row['body']?></b>
</p>
</div>
<?php
}while($row = mysql_fetch_array($query));
}
mysql_free_result($query);
mysql_close($conex);
这是结果(蓝色线条是我在油漆上画的):
(http://spectrum-solaris.meximas.com/stack2.PNG)
do { } while()
不适用于DB循环。关于你第一次通过do
$行不会是DB结果。它将是一个简单的整数——结果中的行数。
你想要这个:
$numrows = mysql_num_rows($query);
while($row = mysql_fetch_array($query)) {
...
}
你能试试这个吗,而不是do { } while()
if($row > 0 ){
while($rowData = mysql_fetch_array($query)){
?>
<div class ="tematica" >
<p>
<small>Published by <b><a href="user.php"><?= $rowData['name'] ?></a></b></small>
</p>
<p>
<big><a href="show.php"><?= $rowData['tittle'] ?></a></big>
</p>
<p>
<b><?=$rowData['body']?></b>
</p>
</div>
<?php
}
}
mysql_free_result($query);
mysql_close($conex);
您不会在第一次迭代中获取结果集的一行。。。所以CCD_ 4不包含第一次迭代的数据。
你可以试试这样的东西:
while ($row = mysql_fetch_assoc($query)){ // or mysql_fetch_array or ...
// ...
}
如果你真的想使用do{}while
,尽管它不适合你的使用:
do {
$row = mysql_fetch_assoc($query); // or mysql_fetch_array or ...
// ...
} while ($row);