2013-03-21 85 views
5

我有一個代碼可以使用ajax動態搜索數據庫中的數據,但我一次只能搜索1個關鍵字。我想修改它,以便我可以搜索多個關鍵字。現在,如果我鍵入由空格和數據庫分隔的2個關鍵字,則數據不會被空格分隔,將不會有結果。 如果在數據庫中的數據是:用php和mysql搜索多個關鍵字(其中X就像)

'PLAYSTATION3' 或 '玩酷STATION3'

,我搜索:

遊戲站

有將是沒有結果。我想知道是否可以修改我的代碼,以便搜索2個或更多由空格或其他單詞或DOT或下劃線或( - )或(+)或(%)字符分隔的關鍵字或單詞。或者(別的什麼大聲笑)。

我知道我應該使用pdo或mysqli,但我只用於測試!

$queried = $_POST['query']; 



$search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'"); 
while($searche = mysql_fetch_array($search)){ 
    echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; 

    } 

回答

17

要動態搜索所有的關鍵詞,你可以使用爆炸功能單獨所有關鍵字;

$queried = mysql_real_escape_string($_POST['query']); // always escape 

$keys = explode(" ",$queried); 

$sql = "SELECT * FROM links WHERE name LIKE '%$queried%' "; 

foreach($keys as $k){ 
    $sql .= " OR name LIKE '%$k%' "; 
} 

$result = mysql_query($sql); 

注1:在查詢中使用之前請務必逃跑用戶輸入。

注2: mysql_ *功能已被棄用,使用的mysqli或PDO作爲替代

+1

非常感謝!有用! – user1932820 2013-03-21 03:04:46

+0

謝謝你,這是非常有幫助的全... – 2016-03-02 06:21:57

+0

@SandunHarshana你很受歡迎 – Ibu 2016-03-02 06:43:51

0

只需添加一個OR子句。

E.g.

SELECT * FROM links WHERE name LIKE '%$keyword1%' OR name LIKE '%$keyword2%' 

但我強烈建議您使用參數化查詢或其他安全的庫,以避免Sql Injection Attacks

+0

你是對的,謝謝!但我沒有2種形式,我有1種形式,當我搜索時,它不準確。這裏是我正在尋找的一個例子---> http://mega-search.me/當你輸入時,你可以把一個以上的關鍵字用一個空格分開,並且查詢會找到一個結果。 – user1932820 2013-03-21 02:57:46

1

不要使用mysql_*功能甚至testing了。它們不會比mysqli更容易,以防萬一您認爲在此測試容易,然後移動。

但是你可以在,拆分輸入,並嘗試這個

<?php 

$queried="abc,test, testing"; 
$values=explode(',',$queried); 


$sql="SELECT * FROM links WHERE"; 
$i=0; 
foreach($values as $v) 
{ 
$v=trim($v); 
if($i==0) 
{ 
$sql.=" name LIKE '%$v%'"; 
} 
else 
{ 
$sql.=" OR name LIKE '%$v%'"; 
} 

$i++; 
} 

$search = mysql_query($sql); 
while($searche = mysql_fetch_array($search)){ 
    echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; 

    }  
?> 
+0

非常感謝!有用。我認爲我可以自動替換%20的空格,然後自動獲取不同的單詞。謝謝!它真的有幫助 – user1932820 2013-03-21 03:06:23

+0

很高興它有幫助。這裏的「trim」功能會自動從關鍵字的開頭或結尾刪除多餘的空格,因此您不必手動替換空格 – 2013-03-21 03:08:44