【问题标题】:PHP - Selecting Multiple columns from a databasePHP - 从数据库中选择多个列
【发布时间】:2012-12-07 11:11:55
【问题描述】:
$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" ;

我有列名称、摘要、描述、营业时间、地址、邮政编码

我想要做的是触发 '$construct' 查询中的所有这些列,其中包括 LIKE '%$search_each%'

结构是什么,我尝试过 OR、AND 和 UNITE

我的想法已经用完了。

【问题讨论】:

  • foreach循环迭代后$construct的值是多少
  • 您是否要检查 ANY 的搜索词是否出现在 ANY 的字段中?

标签: php forms search multiple-columns


【解决方案1】:

像这样使用concat_ws()

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

希望它工作......

【讨论】:

  • 虽然现在我的数据库信息正在重复其自身并每次显示 12 次回显,但 12 是我在数据库中拥有的行数。有人对如何解决这个问题有任何想法吗?我试过休息;但那只会在我的搜索中产生一个结果......
【解决方案2】:
$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 现在是一个数组,其中包含搜索条目作为每个列键的字符串值。

【讨论】:

  • 非常感谢您的提醒!我知道重复结果有问题,这与多维数组有关吗?我尝试过使用休息;在回声中,但这总是将搜索减少到一个结果,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多