我想选择 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/