2015-02-11 84 views
2

我正在我的網站上使用AJAX和PHP進行實時搜索。我已經嘗試使用XML,我不喜歡它。我需要搜索結果能夠輕鬆更新,我發現用數據庫做這件事更容易。PHP實時搜索數組

所以,我有這樣的代碼至今:

<?php 
// database connection 
$query = "SELECT * FROM Questions"; 
$doQuery = mysql_query($query); 

$searchArray = array(); 
$x = 0; 
while($row=mysql_fetch_assoc($doQuery)) { 
$searchArray[$x] = $row['title']; 
$x++; 
} 

$q = $_GET['search']; 

現在我已經從我的問題表中的所有標題的數組。

當用戶鍵入每個字母時,我該如何去搜索我的數組中的字符串。 (假設我有一個函數在keyup事件中使用ajax調用上述查詢)。

還是我這樣做完全錯了?我想用數據庫來獲得我的搜索結果。這樣做的最好方法是什麼?

感謝

編輯AFTER: 我也已經嘗試做了類似聲明爲$query部分:

$query = "SELECT * FROM Questions WHERE title LIKE '%" . $q . "%'"; 

我不喜歡它是如何工作的,因爲一旦你過了一個字結果不匹配。

+0

爲什麼你有一行說'$ x == 0;'?不應該是'$ x = 0;'? – yellowantphil 2015-02-11 03:05:15

+0

是的。抱歉。錯字。我將修復 – krummens 2015-02-11 15:07:55

回答

1

與其將數據拉入數組,您的最佳解決方案是設置一個AJAX解決方案,讓AJAX端點運行帶有通配符的LIKE查詢。常見的實現看起來是這樣的:

$query = "SELECT * FROM Questions WHERE someCol LIKE %SOME_INJECTED_VAR%"; 

此外,作爲一個說明,你應該看看使用要麼庫MySQLi或PDO,而不是mysql_ *功能,因爲它們已過時,在即將到來的PHP版本將被刪除。

+0

請參閱我的編輯 – krummens 2015-02-11 02:42:19

+0

你是否確保逃避所有適當的角色? – 2015-02-11 02:43:12

+0

沒有。我會怎麼做? – krummens 2015-02-11 02:43:29