这是查询的一部分,它应该在帖子表中搜索早,晚,晚列。
$add_here .= " AND posts.".$col." IN ('" . implode("',' ",$days) . "')";
$ col是保存用户提供的列名的数组或单个值的变量。即'早上','下午','晚上'。你知道如何改变上面的查询来搜索数组($ col)吗?
以下是有效的,因为我指定的列名是'下午'。我想知道如何用数组值替换文本'下午'!
$add_here .= " AND posts.afternoon IN ('" . implode("',' ",$days) . "')";
答案 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'))