php - PDO 查询搜索整列

标签 php mysql pdo

我想选择 mysql 数据库表的整个列,但前提是尚未设置值。

对于 mysqli,我会将值设置为等于列的名称,而不将其设置为字符串,但是在 PDO 查询中它不起作用?

我有以下内容:

$stmt = $this->_db->prepare('SELECT BookDate, DepDate, BkngVal, Channel, Market, Region, MappedType, calc_ExpMargin FROM sales
WHERE MappedType = :tailormade AND Region = :region AND MappedType = :type AND Channel = :channel AND BookDate <= :firstDate AND BookDate >= :secondDate');
$stmt->execute(array(
  'tailormade' => $tailormade,
  'region' => $region,
  'type' => $type,
  'channel' => $channel,
  'firstDate' => $date1,
  'secondDate' => $date2
));

现在假设除了 $region 之外的变量都已设置。如果是这种情况,我想使用区域选项搜索整个区域列来搜索所有选项。

这可能吗?

我希望这个问题有意义。

最佳答案

据我了解,您有时想从查询中省略搜索条件,您可以这样做:

SELECT 
  BookDate,
  DepDate,
  BkngVal,
  Channel,
  Market,
  Region,
  MappedType,
  calc_ExpMargin 
FROM
  sales 
WHERE (MappedType = :tailormade OR :tailormade IS NULL)
  AND (Region = :region OR :region IS NULL)
  AND (Channel = :channel OR :region IS NULL)
  AND (BookDate <= :firstDate  OR :firstDate IS NULL)
  AND (BookDate >= :secondDate  OR :secondDate IS NULL)

此外,您还使用了 MappedType 两次,这在使用 AND 子句时会出现问题,因为一列不能同时具有两个不同的值。所以我删除了一个。无论如何,我给出了如何做到这一点的示例。

如果您想省略任何参数,请记住将其设置为 null 值 - 这可以是给定示例的函数调用:

getDataUK('FIT', NULL, 'TRADE', 'UK', '2016-01-01', '2016-01-07');

关于php - PDO 查询搜索整列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38566370/

相关文章:

PHP Heredoc 文件意外结束错误

php - 使用php获取不带扩展名的文件和文件名列表

php - 属性的 MySQL 增量值 - 有时会丢失(?)

PHP - 使用 PDO 将字符串数组绑定(bind)到 IN() 子句

PHP MySQLi 准备好的语句不起作用

javascript - 从远程页面到 Bootstrap Modal 的内容

php - 使用PHPExcel制作自动生成的excel文件

mysql - 在mysql中使用和搜索jsonb数据

mysql - pdo执行给出错误

php - 使用 LIKE 子句的 MySql 搜索不起作用