mysql_fetch_array问题

时间:2010-07-07 12:45:12

标签: php mysql

我正在尝试用php做留言簿,但我遇到了一些 mysql_fetch_array 功能的问题。我不明白为什么。我试着通过推杆进行调试 死(“错误”.mysql_error())但没有打印出来。我保证所有变量都已正确初始化。 这是我的代码:

<?php

 $nbmessagesPP = 10;
 mysql_connect(HOST, USER,PASSWORD) or die( "Unable to connect to database");
 mysql_select_db(DBNAME) or die ("Unable to select database!"); 

 .......

 if(isset($_GET['page'])){
    $page = $_GET['page'];
  } else {
    $page = 1;
  }
  $first_msg = ($page - 1) * $nb_of_Page;
  $query = 'Select * from livredor ORDER BY id DESC LIMIT '.$first_msg.', '.$nbmessagesPP;
  $rep = mysql_query($query) or exit("Error in query".mysql_error());

  $v = true;
  while($v){
      $v = ($data = mysql_fetch_array($rep) or die ("Error fetching the data : ".mysql_error()));
      echo "<p>id -> ".$data['id']."</p>";    
      echo "<p>pseudo ->".$data['pseudo']."</p>";
      echo "<p>messages ->".$data['message']."</p>";
      echo "<hr/>";
  } 
  mysql_close();
?> 

有人可以帮助我;)

4 个答案:

答案 0 :(得分:3)

您的代码未正确处理错误或最后一行。如果$v为false,它仍会继续打印一些数据。最好改写为:

while (($data = mysql_fetch_array($rep))) {    
  echo   
  ... 
}

在继续进行打印之前,这会强制对抓取进行评估。

答案 1 :(得分:0)

问题是您正在尝试访问不存在的结果元素。 mysql_fetch_array返回带有整数索引的常规数组。你想要的是mysql_fetch_assoc,它返回一个关联数组。

编辑:您还遇到了Chris所描述的问题,而没有正确处理最后一行。

答案 2 :(得分:0)

通常,如果您收到错误消息“提供的参数不是有效的MySQL结果资源”,则表示您的MySQL查询失败,因此无法返回有效的结果资源。

在通过$query发送之前尝试回显mysql_query(),然后尝试将echo'd查询放入phpMyAdmin,看看它是否返回任何结果。

答案 3 :(得分:0)

好的,我发现了问题。 问题是在另一个页面我有一个mysql_connection,在那个页面我正在创建一个新的。 我只是捕获mysql_connect函数的返回值,然后在最后用mysql_close函数关闭它。像这样:

  <?php
     $link = mysql_connect(HOST, USER,PASSWORD) or die( "Unable to connect to database");
     mysql_select_db(DBNAME) or die ("Unable to select database!"); 
     .....

     while($data = mysql_fetch_array($rep)) {//i do something here}

     mysql_close($link);    
 ?>

感谢您的回答:)