为什么不循环? (PHP和MySQL)

时间:2010-10-14 15:54:38

标签: php mysql loops while-loop

我写了这段代码:

<?php
mysql_connect("localhost", "root", "root") or
    die("Could not connect: " . mysql_error());
mysql_select_db("internal");

$result = mysql_query("SELECT Title, Message FROM msg");
?>

<?php

  while ($row = mysql_fetch_array($result, MYSQL_NUM)){
?>

     <div>
         <h3><a href="#"><?php printf("%s", $row[0]); ?></a></h3>
         <div><?php printf("%s", $row[1]); ?></div>
     </div>

<?php
 mysql_free_result($result);
  }
?>

我得到的结果是MySQL表的第一行(格式正确)我包含一个图像以防万一:

screeshot result

(这实际上是我的MySQL数据库的第一行,也是我唯一看到的)

代码循环直到我必须添加html标签,我的意思是如果我这样做:

<?php printf("%s", $row[0]); ?>
&
<?php printf("%s", $row[1]); ?>

它循环并带来了所有结果。

这可能是语法错误吗?

5 个答案:

答案 0 :(得分:5)

在你的while循环中

mysql_free_result($result);。这使得在第一次迭代之后,它会清除结果,因此不再能够获取结果。

将结尾更改为

<?php
  }
mysql_free_result($result);
?>

它会修复它

答案 1 :(得分:2)

你的倒数第三行在你完成之前释放了结果。把它移到循环外面。

答案 2 :(得分:1)

将对mysql_free_result的调用移到while循环之外。

答案 3 :(得分:1)

您在第一次循环后释放结果。这里

mysql_free_result($result);
 }

这应该是

  }
mysql_free_result($result);

答案 4 :(得分:0)

mysql_free_result不清除结果集吗?

你没有什么可以循环的!