如何在mysql中搜索多个列

时间:2015-12-21 12:22:22

标签: php mysql

这是查询的一部分,它应该在帖子表中搜索早,晚,晚列。

$add_here .= " AND posts.".$col." IN ('" . implode("',' ",$days) . "')";

$ col是保存用户提供的列名的数组或单个值的变量。即'早上','下午','晚上'。你知道如何改变上面的查询来搜索数组($ col)吗?

以下是有效的,因为我指定的列名是'下午'。我想知道如何用数组值替换文本'下午'!

 $add_here .= " AND posts.afternoon  IN ('" . implode("',' ",$days) . "')";

1 个答案:

答案 0 :(得分:1)

使用array_map构建一系列与OR分组的条件:

$days = ['sun','mon','tue'];
$col = ['afternoon','morning','night'];
$add_here = '';

$add_here .= sprintf(" AND (%s)",
    implode(' OR ', array_map(
            function($colx) use ($days) {
                return sprintf("posts.%s IN ('%s')", $colx, implode("','",$days));
            }, is_array($col) ? $col : array($col))
    )
);
  

AND(posts.afternoon IN('sun','mon','tue')或posts.morning IN   ('sun','mon','tue')或posts.night IN('sun','mon','tue'))