2012-08-02 44 views
0

Possible Duplicate:
Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given errorMySQL錯誤:mysql_fetch_array預計參數1是資源

我最近接到了一個客戶端,在那裏我有折舊PHP舊的代碼更改爲新的工作。在該代碼中我碰到mysql_db_query我轉換成的mysql_query但被賦予了錯誤來

mysql_fetch_array預計參數1是資源,布爾給

//the old code was like: 

$result = mysql_db_query($mysql_db,"SELECT Hierarchy FROM MenuSystem WHERE LENGTH(Hierarchy) >= 2 AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0;"); 

//and my new code is : 

$result = mysql_query("SELECT Hierarchy FROM MenuSystem WHERE LENGTH(Hierarchy) >= 2 AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0"); 

請告訴我它是指問題

行號11其中是循環的末端括號

while ($row = mysql_fetch_array($result)) { 
    $ConcatHierarchy .= $row["Hierarchy"]; 
} 
+0

你需要找到代碼中的錯誤發生,並張貼在這裏。該錯誤應該聲明行號和源文件。 – pyrospade 2012-08-02 02:51:45

+0

有關您的信息,請使用棄用的代碼替換棄用的代碼。考慮使用PDO或MySQLi而不是舊的mysql_函數。 – Tchoupi 2012-08-02 02:54:31

+0

我編輯了這個問題,現在你可以看到錯誤行 – monk 2012-08-02 02:54:49

回答

1

我看不到唯一的代碼會導致錯誤。但是,如果您想將$ result作爲數組使用,那麼可能會產生問題,因爲我們需要先檢查它。如果查詢失敗,它將返回一個FALSE而不是一個資源,即一個數組。

(我的意思是您以後使用資源作爲數組實際上不過是$結果要麼是FALSE或可以通過調用mysql_fetch_array()。感謝您的評論中使用的resrouce)

其實你可以檢查其他職位如: mysql_fetch_array() expects parameter 1 to be resource problem

僅供參考,請按照手冊上建議,PPL可能更喜歡現在PDO: 使用這個擴展的氣餒。相反,應該使用MySQLi或PDO_MySQL擴展。

+0

$ result不會是一個數組,它將是一個從mysql_fetch_array返回數組的對象。無論哪種方式,這很可能是你的問題。在將結果傳遞給mysql_fetch_array之前測試$ result。就像'if($ result == False){die(); }'除了更好的錯誤處理,當然。如果可能的話使用例外 – pyrospade 2012-08-02 02:55:14

+0

我編輯了這個問題,現在你可以看到錯誤行 – monk 2012-08-02 02:56:19

+0

在查詢字符串的語法上是否有任何錯誤? – monk 2012-08-02 02:57:33

1

你正在做的工作的弦,在缺乏真實的東西引用,使之成爲一個字符串:

... AND LOCATE(" . $_SESSION['AccessLevel'] . ",AccessLevels) <> 0"); 
       ^--        ^--- 

所指示的點需要單引號(')。現在你可能會嵌入一些字符串,比如'SuperUser'。如果沒有引號,MySQL就會將其視爲字段名稱,這幾乎可以肯定不存在。

如果你有適當的錯誤代碼中的處理,你必須立即從錯誤信息見過這個:

$result = mysql_query(...) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^--- bare minimum 
相關問題