繁体   English   中英

PDO查询搜索整列

[英]PDO queries search whole column

我想选择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使用了MappedType ,这在使用AND子句时会出现问题AND因为一列不能同时具有两个不同的值。 所以我删除了一个。 无论如何,我举这个例子。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM