2011-01-26 440 views
2

我有下面的代碼塊,它會在空格處爆炸字符串。通配符mysql LIKE或IN數組值問題

$run = explode(" ",strtolower($q)); 

例如, 「這是字符串」

陣列$run樣子:

(這是該字符串)

的問題,即時通訊有有:

我只想explode字符串,如果它有一個白色的東西,等同於使用PHP函數str_word_count($q)> 1。

不確定如何創建一個單獨的查詢,這將使用字符串中的多個單詞和搜索表中的任何一個。

$query = "SELECT name FROM `table1` WHERE name LIKE '%". mysql_real_escape_string($run[0]) ."%' OR name LIKE '%". mysql_real_escape_string($run[1]) ."%'"; 

試圖簡化上述查詢,使其更小,並根據字數變化。這也是一個很好的方法來爆炸字符串,然後準備SQL?

我試着用IN以及SQL查詢,沒有好運氣。

回答

2

您可以使用MySQL的MATCH。 。 。反對 。 。 。執行此類搜索:

WHERE MATCH (name) AGAINST ('this is the string') 

有關更多信息,請參閱documentation


原液,在這種情況下沒有幫助:

您可以檢查出MySQL的特定功能FIND_IN_SET:

WHERE FIND_IN_SET(colname, 'This,is,the,string') > 0 

在colname的值不能包含逗號,但是。