2012-12-07 136 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

非常感谢提醒!我知道有重复结果的问题,这与多维数组有关。我曾尝试过使用休息;在回声中,但这总是减少搜索到一个结果,谢谢。 –