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

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

  •  0
  • Trufa  · 技术社区  · 14 年前

    我写了这个代码:

    <?PHP
    mysql_connect(“localhost”、“root”、“root”)或
    模具(“无法连接:”。MySqLyError());
    mysql_select_db(“内部”);
    
    $result=mysql_query(“select title,message from msg”);
    ?gt;
    
    &?PHP
    
    而($row=mysql_fetch_array($result,mysql_num))。{
    ?gt;
    
    和DIV & GT;
    <h3><a href=“”><?php printf(“%s”,$row[0]);?></a></h3>
    <DIV><?php printf(“%s”,$row[1]);?></Div>
    &L/DIV & GT;
    
    &?PHP
    mysql_free_result($result);
    }
    ?gt;
    < /代码> 
    
    

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

    (这实际上是我的mysql db的第一行,也是我唯一看到的东西)

    代码一直在循环,直到我不得不添加HTML标记,我的意思是如果我只做:

    <?php printf(“%s”,$row[0]);?gt;
    和;
    &?php printf(“%s”,$row[1]);?gt;
    < /代码> 
    
    

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

    这可能是语法错误吗?

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

    screeshot result

    (这实际上是我的mysql db的第一行,也是我唯一看到的东西)

    代码一直在循环,直到我不得不添加HTML标记,我的意思是,如果我只是这样做:

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

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

    这可能是语法错误吗?

    5 回复  |  直到 14 年前
        1
  •  5
  •   Tarka user370305    14 年前

    mysql_free_result($result); 在你的while循环中。这使得在第一次迭代之后,它可以清除结果,这样就不能再获取更多的结果。

    将结尾改为

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

    它会修好的

        2
  •  2
  •   Ignacio Vazquez-Abrams    14 年前

    你的第三行到最后一行在完成之前释放结果。把它移到圈外。

        3
  •  1
  •   stew    14 年前

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

        4
  •  1
  •   egis    14 年前

    您将在第一个循环之后释放结果。在这里

    mysql_free_result($result);
     }
    

    这应该是

      }
    mysql_free_result($result);
    
        5
  •  0
  •   Johan    14 年前

    mysql_free_result没有清除结果集吗?

    你没什么可循环的了!