2012-12-07 138 views
0
$search_exploded = explode (" ", $search); 
foreach($search_exploded as $search_each) { 
    $x++; 
    if($x==1) 
     $construct .="Name LIKE '%$search_each%'"; 
    else 
     $construct .="AND Name LIKE '%$search_each%'"; 
} 

$construct ="SELECT * FROM Rating, Attraction WHERE $construct" ; 

我的列名,摘要,描述,OpeningHours,地址,郵編PHP - 從數據庫中選擇多列

我想要做的是觸發在所有這些列'$結構' 查詢包含LIKE '%$ search_each%'

會是什麼結構,我已經試過OR,AND,團結

我已經用完Ø f的想法。

+0

'$ construct'的值是什麼? foreach循環迭代後 – Hemantwagh07

+0

您想檢查搜索詞的* ANY *是否出現在* ANY *字段中? – Geo

回答

0

使用concat_ws()這樣的:

$construct ="SELECT * FROM Rating, Attraction WHERE 
concat_ws(Name, Summary, Description, OpeningHours, Address, Postcode) 
LIKE '%$search_each%'"; 

希望它工作...

+0

這工作,非常感謝! –

+0

儘管現在我的數據庫信息正在重複自我並且每次顯示回波12次,12是我在數據庫中的行數。任何人有任何想法如何解決這個問題?我嘗試過休息;但後來只在我的搜索中產生一個結果... –

0
$columns = array('Name', 'Summary', 'Description', 'OpeningHours', 'Address', 'Postcode') 
foreach($columns as $column) { 
    $search_exploded = explode (" ", $search[$column]); 
    foreach($search_exploded as $search_each) { 
     $x++; 
     if($x==1) 
      $construct .="$column LIKE '%$search_each%'"; 
     else 
      $construct .="AND $column LIKE '%$search_each%'"; 
    } 
} 

你要記住,現在$search是具有爲每個列密鑰字符串值項搜索條目數組。

+0

非常感謝提醒!我知道有重複結果的問題,這與多維數組有關。我曾嘗試過使用休息;在回聲中,但這總是減少搜索到一個結果,謝謝。 –