这是查询的一部分,它应该在 posts 表中搜索上午、下午和晚上的列。
$add_here .= " AND posts.".$col." IN ('" . implode("',' ",$days) . "')";
$col 是保存用户提供的列名的数组或单个值的变量。即“早上”、“下午”、“晚上”。您知道如何更改上面的查询以在数组($col)中搜索吗?
下面的代码有效,因为我指定了列名称“afternoon”。我想知道如何用值数组替换文本“afternoon”!
$add_here .= " AND posts.afternoon IN ('" . implode("',' ",$days) . "')";
最佳答案
使用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') OR posts.morning IN ('sun','mon','tue') OR posts.night IN ('sun','mon','tue'))
关于php - 如何在mysql中搜索多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395598/