[英]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.