[英]SELECT * FROM table where column like '%variable%' - multiple words in any order
我為同事們編寫了一個快速搜索頁面,使用php查詢數據庫。 他們的字符串被命名為$ wordvariable(他們也選擇日期等,但這里並不重要),這是我到目前為止所做的:
$wordvariable = explode(" ", $wordvariable);
$wordvariable = implode("%", $wordvariable);
$Query = mysql_query(
"SELECT * FROM table
WHERE (column1 like '%$wordvariable%' or column2 like '%$wordvariable%')
AND logdatex between $TimeEarlier and $TimeNow"
) or die(mysql_error());
然而,這只搜索他們按照鍵入的順序鍵入的單詞,例如搜索“堆棧溢出”會發現“堆棧這是溢出”但不會找到“溢出堆棧”。 我希望我的措辭正確,任何幫助將不勝感激
像這樣的東西:
$where = "WHERE column1 LIKE '%" . implode("%' OR column1 LIKE '%", explode(" ", $wordvariable)) . "%'";
短則,就explode
了$wordvariable
上的空間,然后implode
在您需要的短語的各個單詞。
更詳細,包括column2
:
$words = explode(" ", $wordvariable);
$list1 = implode("%' OR column1 LIKE '%", $words);
$list2 = implode("%' OR column2 LIKE '%", $words);
echo $where = "WHERE (column1 LIKE '%$list1%') OR (column2 LIKE '%$list2%')";
像這里更新您的代碼:
$wordvariable = explode(" ", $wordvariable);
$Query = mysql_query(
"SELECT * FROM table
WHERE (column1 like '%" . implode("%' OR column1 Like '%", $wordvariable) . "%'
OR column2 like '%" . implode("%' OR column2 Like '%", $wordvariable) . "%')
AND logdatex between $TimeEarlier and $TimeNow"
) or die(mysql_error());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.