这是我的代码,有错误,因为当我把它放在wamp(chrome)中时,它会返回一个副本"由" (对于任何疑惑,$ 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);
这是结果(蓝色线由我在PAINT上制作):
答案 0 :(得分:1)
do { } while()
不适合数据库循环。在你过去的第一个do
。 $ row不会是数据库结果。它将是一个简单的整数 - 结果中的行数。
你想要这个:
$numrows = mysql_num_rows($query);
while($row = mysql_fetch_array($query)) {
...
}
答案 1 :(得分:0)
您不会在第一次迭代中获取结果集的行...因此$row
在第一次迭代时不包含数据。
您可以尝试以下方式:
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);
答案 2 :(得分:0)
你可以尝试这个,而不是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);