php - 如何在mysql中搜索多列

标签 php mysql

这是查询的一部分,它应该在 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/

相关文章:

php - 为什么查询不像 phpmyadmin 中那样返回显示名称?

php - PHP 中的 MongoDb 更新

php - 我如何在mysql中放置一个数组?

php - CodeIgniter 计数太慢 - 分页

Mysql加载文件错误加载不准确的数据

php - 相当于 PHP ucwords() 函数的 MySQL 字符串函数

php - 无法将 PHP 应用程序与 MySQL 连接

mysql - 批处理脚本: update database with new sql files

php - 您可以让您的用户通过Youtube api上传视频吗?

php - mysql_fetch 无法收集数据库中的所有数据