代码之家  ›  专栏  ›  技术社区  ›  Dimitri

mysql_fetch_数组问题

  •  0
  • Dimitri  · 技术社区  · 16 年前

    我想用PHP做一个留言簿,但是我有一些问题 mysql_fetch_数组 功能。我不明白为什么。我尝试通过 die(“错误”.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 回复  |  直到 16 年前
        1
  •  3
  •   Chris Arguin    16 年前

    您的代码不能正确处理错误或最后一行。什么时候? $v 如果是假的,它仍然会继续打印一些数据。最好重写为:

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

    这将强制在继续打印之前对提取进行评估。

        2
  •  0
  •   You    16 年前

    问题是,您试图访问不存在的结果元素。 mysql_fetch_array 返回带整数索引的正则数组。你想要的是 mysql_fetch_assoc ,返回关联数组。

    编辑: 你也有克里斯描述的问题,没有正确处理最后一行。

        3
  •  0
  •   Jason Lewis    16 年前

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

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

        4
  •  0
  •   Dimitri    16 年前

    好的,我发现了问题。 问题是,在另一个页面中,我有一个mysql_连接,在该页面中,我创建了一个新的连接。 我只捕获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);    
     ?>
    

    谢谢你们的回答,伙计们:)

    推荐文章