2012-11-20 24 views
-2

可能重複:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in錯誤獲取陣列

在我的詳細視圖頁面,並抓住正確的ID在地址欄,就像這樣:

http://localhost/attractions/details.php?ID=1 

我的頁面標題和邊欄加載,但在我想要我的記錄細節的空間中,我得到這個錯誤一團糟年齡:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/attractions/details.php on line 41 

這是'details.php頁面代碼(用了不必要的html刪除):

<?php 
include 'page-start.php'; 
$myQuery = "SELECT Attraction.*, Type.TypeName "; 
$myQuery .= "FROM Attraction "; 
$myQuery .= "INNER JOIN Type ON Attraction.Type = Type.TypeID"; 
$myQuery .= "WHERE AttractionID=" . $_GET['ID']; 
$result = mysql_query($myQuery); 
if (!result) { 
    die('Query error: ' . mysql_error()); 
} 
?> 

<body> 
<div class="container"> 
     <h2>List of Attractions</h2> 

     <?php 
      //display attractions row by row 
      while($row = mysql_fetch_array($result)) 
      { 
       echo '<div class="attraction">'; 
       echo '<h4><a href="details.php?ID=' . $row['AttractionID'] . '">' . $row['Name'] . '</a></h4>'; 
       echo '<div class="featureimage">'; 
       echo '<img src="'. $row['ImageUrl'] . '" />'; 
       echo '</div>'; 
       echo '<p>' . $row['TypeName'] . '</p>'; 
       echo '<h5>' . $row['Summary'] . '</h5>'; 
       echo '</div>'; 
      } 
     ?> 
</div><!-- container --> 
</body> 
</html> 
<?php 
include 'page-end.php'; 
?> 

41號線是這一行:

while($row = mysql_fetch_array($result)) 

我只知道我會在這裏忽略這麼簡單的東西,但是我被困住了,我真的無法弄清楚是什麼原因導致了錯誤,請讓我看看我的情況,我已經搜索過類似的問題,但沒有Ť帽子可以幫助我!

+0

http://localhost/attractions/details.php?ID = 1顯然不起作用;) – Phorce

+0

您在'if(!result)'中缺少'$'。 – deceze

+0

你也很容易** SQL注入**。見http://kunststube.net/escapism。 – deceze

回答

2

您根據需要在MySQL中,對於加入代碼,缺少反引號時的一些關鍵字 EG Type | TYPE | TyPE...

$myQuery = "SELECT `Attraction`.*, `Type`.`TypeName` "; 
$myQuery .= "FROM `Attraction` "; 
$myQuery .= "INNER JOIN `Type` ON `Attraction`.`Type` = `Type`.`TypeID`"; 
$myQuery .= "WHERE `AttractionID` =" . $_GET['ID']; 

和你使用表名作爲傑弗裏表示,將返回false,如果查詢無效

+0

如果他寫了$結果而不是結果,他會發現。看到我的答案。 –

+0

@saratis你只是提供了什麼jeffrey已經說過的代碼,並且現在更新他的代碼來顯示 –

+0

@saratis大聲笑它不是一個競爭。 – itachi

2

請注意mysql_query()可能會返回布爾值。在使用其結果作爲結果類型之前,您需要檢查mysql_query()是否工作(如果不是,則返回false)。

在你的情況下,查詢明顯失敗並返回false,不能用作resource。 你應該

if (!$result) { /* we have a database error */ } 
0

看這個部分去:if (!result) {你缺少$。這應該會產生一個錯誤,也許你沒有顯示通知。無論如何,你的SQL返回false,但你沒有捕捉到,因爲我提到的錯誤。所以修復這個錯誤並檢查你的SQL。

0

可能的解釋是,如果你的mysql_query只是失敗,給你的變量$ result的值爲FALSE(這是一個布爾值),然後mysql_fetch_array()在該BOOLEAN上窒息。驗證您的查詢是否有效。你不會觸發你的查詢錯誤條件,因爲你錯過了$ if (!result) {

此外,最好的做法是使用PDO或MYSQLI而不是mysql_函數。 (They're (going to be--thanks Martin) deprecated.

+0

嘿那裏沒有棄用,因爲他們會提出一個E_DEPRECATED通知/日誌那裏只是勸阻他們不會棄用很長一段時間,因爲許多系統使用它們,並不想記錄E_DEPRECATED通知在PHP日誌 –