2012-12-26 33 views
1

你好用PHP林不知道另外一個問題,爲什麼它不工作,但這裏是代碼:不工作的另一個動態表(搜索引擎)

 <?php include 'db.inc.php';function search_results($keywords){$returned_results = array(); 
$where = ""; 

$keywords = preg_split('/[\s]+/', $keywords); 
$total_keywords = count($keywords); 


foreach($keywords as $key=>$keyword){ 
    $where .="`keywords` LIKE '%$keyword%'"; 
    if ($key != ($total_keywords - 1)){ 
     $where .= " AND "; 
    } 
} 

$results = "SELECT `document_name` ,LEFT(`first_paragraph`,70) as `first_paragraph` FROM `documents` WHERE $where "; 
$results_num = ($results = mysql_query($results)) ? mysql_num_rows($results) : 0 ; 
if ($results_num == 0){ 
    return false; 
}else { 

    while($results_row = mysql_fetch_assoc($results)){ 
    $returned_results[] = array(
       'title' => $results_row['document_name'], 
       'description' => $results_row['first_paragraph'] 
    ); 
} 

return $returned_results; 


} 
} 

?> 

我試着在此刻與PDO作,但即時通訊不知道如何.. 即時通訊不知道如果這是問題,但我沒有從MySQL Thx爲你的時間!

+0

您是否正在連接到您的db.inc.php文件?我總是有這樣的:include_once('db.inc.php'); – Jim

+0

是的,我連接到db –

+0

你得到了什麼錯誤 - 具體是你得到MySQL錯誤? –

回答

2

不要把你的整個WHERE條件在單引號現在你正在做的事情是這樣的:

SELECT document_name ,LEFT(first_paragraph,70) as first_paragraph FROM documents WHERE '`keywords` LIKE '%keyword%'' 

應該僅僅是:

SELECT document_name ,LEFT(first_paragraph,70) as first_paragraph FROM documents WHERE `keywords` LIKE '%keyword%' 

你會很容易地能夠通過一些基本的調試來發現它

  • 總是寫代碼捕捉和記錄數據庫錯誤(你有沒有這樣的代碼)
  • 如果數據庫錯誤不告訴你,你想要什麼,記錄你嘗試運行,並嘗試查詢直接在數據庫上運行它。

最後,我沒有在這裏看到任何PDO,您正在使用mysql_* functoins,它們已被棄用且不應使用。

+0

我想讓它pdo但我不是確定如何。我不明白你的意思是單引號?我添加所有選擇內部結果和$在哪裏我可以添加很多,所以它可以搜索超過1個關鍵字.. –

+0

與pdo我試試這個但我不知道如果它接受數組... $ STH = $ DBH-> query('SELECT document_name,first_paragraph'); \t $ STH-> setFetchMode(PDO :: FETCH_CLASS,'table'); \t while($ obj = $ STH - > fetch()){ \t $ returned_results [] = array( \t \t \t \t \t '標題'=> $ results_row [ 'DOCUMENT_NAME'], \t \t \t \t \t '描述'=> $ results_row [ 'first_paragraph'] –

+0

@AntMar看來你已經刪除了周圍的單引號'$ where'在您最初顯示在問題中的查詢中。這應該有望解決查詢問題。 –