簡體   English   中英

SELECT * FROM table,其中列為'%variable%' - 任意順序的多個單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM