结束mysql\u获取\u数组时PHP与do冲突?

结束mysql\u获取\u数组时PHP与do冲突?,php,Php,这是我的代码,有点不对劲,因为当我把它放在wamp(chrome)中时,它会返回一个重复的“published by”(如果有疑问,$conex=mysql\u connect('localhost','root')) 出版人 您在第一次迭代时没有获取结果集的一行。。。因此,$row在第一次迭代中不包含数据 您可以尝试以下方法: while ($row = mysql_fetch_assoc($query)){ // or mysql_fetch_array or ...

这是我的代码,有点不对劲,因为当我把它放在wamp(chrome)中时,它会返回一个重复的“published by”(如果有疑问,$conex=mysql\u connect('localhost','root'))



出版人


您在第一次迭代时没有获取结果集的一行。。。因此,
$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);
do{}while()
不适用于DB循环。第一次通过
do
$行不会成为DB结果。它将是一个简单的整数——结果中的行数

您希望这样做:

$numrows = mysql_num_rows($query);

while($row = mysql_fetch_array($query)) {
   ...
}

你能试试这个,而不是
do{}while()

if($row>0){
while($rowData=mysql\u fetch\u数组($query)){
?>

出版人


想想看:在第一次迭代中,
$row
是什么,在第二次迭代中是什么?事实上,激活错误报告以获得提示。
mysql.*
函数不再被维护,不应该在任何新的代码库中使用。它正在被淘汰,取而代之的是更新的API。您应该与or.Saw t一起使用他不久前写的:
$row=fetch_array();if($row!=FALSE){do{…}而($row=fetch_array());}
-这会被认为是一种不好的做法吗?我认为检查是否有返回的行是很好的。如果您先获取一行,那就可以了。但是您没有,您正在将行计数提取到用于行的同一个变量中。@king,除非您也在执行
其他
,这只是不必要的重复,不是吗更多。
$numrows = mysql_num_rows($query);

while($row = mysql_fetch_array($query)) {
   ...
}
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);