2012-10-14 38 views
-3

這是我的代碼MySQL的取回陣列布爾錯誤

<?php 
    $result = mysql_query("SELECT * FROM post WHERE username = ".$username." ORDER BY ID DESC "); 
    while($row = mysql_fetch_array($result)){ 
    ?> 
     <div class="post"> 
      <a href="/p/<?php echo $row['ID']; ?>" class="post-title"><?php echo $row['title']; ?> - (Rating: <?php echo $row['rank']; ?>)</a> 
      <p class="post-content"><?php echo $row['description']; ?><br /><br />On <?php echo $row['date']; ?></p> 
     </div> 
    <?php }; ?> 

但我得到這個錯誤:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /*/programs/user.php on line 77

+0

檢查查詢是否正確。 – Dev

+0

它是,當我運行搜索PHPMyAdmin並顯示PHP代碼,這是我得到:$ sql =「SELECT * FROM'vb_posts' WHERE'username' = \'joshblease \'ORDER BY'ID' DESC」 ; –

+0

在$ username上使用strip斜槓,在PHP之外運行查詢,並檢查它是否返回一些東西。 – Dev

回答

3

我懷疑你忘了用單引號把它包起來

$result = mysql_query("SELECT * 
         FROM post 
         WHERE username = '".$username."' 
         ORDER BY ID DESC "); 

但你仍然很容易與SQL注入。請花一點時間低於

Best way to prevent SQL injection in PHP?

+0

有點類似於這個[mysql_fetch_array()期望參數1是資源,在布爾給出的布爾](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-tobebe -resource布爾賦予-在選) –

0

mysql_query()如果有錯誤返回boolean FALSE的文章閱讀。因此,您的SELECT聲明中有錯誤。

在嘗試使用$result之前,您應該檢查是否$result === FALSE。如果$result === FALSE,請使用mysql_error()瞭解更多有關錯誤的信息。

請注意mysql_query()和其他mysql_*函數已被棄用。改爲使用mysqli_*PDO函數/方法。準備報表PDOmysqli_*的一大特色是準備好的報表。他們將幫助您避免SQL注入攻擊。