PHP与do-while结束mysql_fetch_array冲突?

时间:2013-11-28 20:32:42

标签: php

这是我的代码,有错误,因为当我把它放在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上制作):

http://spectrum-solaris.meximas.com/stack2.PNG

3 个答案:

答案 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);