代码之家  ›  专栏  ›  技术社区  ›  Sam Johannes Rudolph

MySQL&PHP代码内存不足时,只有一行

  •  1
  • Sam Johannes Rudolph  · 技术社区  · 14 年前

    当数据库中只有一行时,为什么此代码会抛出内存不足错误。。

    $request_db = mysql_query("SELECT * FROM requests
                    WHERE haveplayed='0'") or die(mysql_error());  
                    $request = mysql_fetch_array( $request_db );
                    echo "<table border=\"1\" align=\"center\">";
                    while ( $request['haveplayed'] == "0" ) {
                        echo "<tr><td>";
                        echo $request['SongName'];  
                        echo "</td><td>";
                        echo "<tr><td>";
                        echo $request['Artist'];    
                        echo "</td><td>";
                        echo "<tr><td>";
                        echo $request['DedicatedTo'];
                        echo "</td><td>";   
                    }
                    echo "</table>";
    

    谢谢。

    4 回复  |  直到 14 年前
        1
  •  3
  •   BMBM    14 年前

    嗯,说实话,我不明白 while if($request['haveplayed'] == 0) 但这也没什么意义,因为查询只返回带有 haveplayed 0 .

    据我所知,您打算从 requests 桌子在哪里 0 . 那不是更像这样吗?

    $request_db = mysql_query("SELECT * FROM requests WHERE haveplayed='0'")
                  or die(mysql_error());
    
    while($request = mysql_fetch_array( $request_db )) {
        // output stuff here ...
        echo $request['SongName']; 
    }
    
        2
  •  3
  •   Iacopo    14 年前

    因为在PHP中

    null == 0 == '0'
    

    所以它是循环的

    使用'=='运算符或更好的'isset()'

    while ( isset($request['haveplayed']) && $request['haveplayed'] == '0')
    

    while 在这段代码中是非常无用的:也许您想在循环中获取一个新数组。

        3
  •  1
  •   helloandre    14 年前

    也许做一个 foreach ($request as $r)

        4
  •  0
  •   Ben Everard    14 年前

    在不投入太多精力的情况下,播放的是什么数据类型?因为您的while循环似乎从未得到满足,请尝试以下操作:

    $request_db = mysql_query("SELECT * FROM requests
                    WHERE haveplayed='0'") or die(mysql_error());  
                    $request = mysql_fetch_array( $request_db );
                    echo "<table border=\"1\" align=\"center\">";
                    while ( $request['haveplayed'] == 0 ) {
    // or           while ( $request['haveplayed'] == false ) {
                        echo "<tr><td>";
                        echo $request['SongName'];  
                        echo "</td><td>";
                        echo "<tr><td>";
                        echo $request['Artist'];    
                        echo "</td><td>";
                        echo "<tr><td>";
                        echo $request['DedicatedTo'];
                        echo "</td><td>";   
                    }