PHP在结束mysql_fetch_array时与do冲突


PHP conflict with do-while end mysql_fetch_array?

这是我的代码,有问题,因为当我把它放在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);