2013-07-08 65 views
0

我在php中有一個搜索表單,當用戶輸入一個名稱進行搜索時,form調用以下php代碼來給出結果。我的問題是,這段代碼執行時給了我「mysql_fetch_array()期望參數1是資源,布爾給定」。如果我將$ sql更改爲諸如$sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users之類的東西,那麼它工作正常。任何想法可能是我的問題,以及如何繼續前進?

//more code 

$start=0; 
$per_page=10; 
$page=1; 

$sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users WHERE (surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%') LIMIT 100 "; 

$sql .= "LIMIT $start, $per_page"; 

$result = mysql_query($sql); 

    while($run = mysql_fetch_array($result)){ 
     $surname = $run['surname']; 
    } 
+0

您使用的是'LIMIT'兩次在您查詢刪除任何一個。 –

+0

請參閱[此答案](http://stackoverflow.com/a/11674313/250259)瞭解如何解決此問題。 –

+0

檢查錯誤消息echo mysql_errno($ link)。 「:」。 mysql_error($ link)。 「\ n」 個; – Sundar

回答

2

您正在生成無效查詢;

$sql = "...LIKE '$name%') LIMIT 100 "; 
$sql .= "LIMIT $start, $per_page"; 

...將生成2 LIMIT子句並導致語法錯誤。當你遇到語法錯誤,並且不檢查返回值mysql_query時,你會在你的問題中得到錯誤信息,因爲你沒有得到結果。如果您使用檢查返回值;

$result = mysql_query($sql) or die(mysql_error()); 

......你會發現錯誤信息是錯誤的。

+0

哦,我看到了,我用LIMIT 2次這樣... – user2491321

1

它看起來像你有LIMIT聲明重複兩次。第一行以LIMIT 100結束,下一行要附加LIMIT $start, $per_page這將導致類似:

LIMIT 100 LIMIT 0,10

0

這是因爲你的查詢失敗。爲什麼不放一個或死(mysql_error());發現錯誤?

做這樣的事情

if($result === FALSE) { 
    die(mysql_error()); // TODO: better error handling 
} 

while($run = mysql_fetch_array($result)){ 
    $surname = $run['surname']; 
} 

由於@Mike指出,你有一個語法錯誤,==> 2倍LIMIT

相關問題