我有一个像
这样的查询SELECT FirstColumn
WHERE SecondColumn = ?
AND ThirdColumn = ?
可能会出现一个?
值,但另一个?
没有值。像
[0] => 123
[1] =>
因此查询可能是SELECT FirstColumn WHERE SecondColumn = 123 AND ThirdColumn = ''
在进行实验时,看到对于这样的查询,mysql不返回任何内容(没有数组)。
但必须返回空值或NULL
或零的数组。像
[0] => Array
(
[FirstColumn] => 0
)
所以试图找到解决方案。
一种解决方案可能是在mysql中创建行FirstColumn
,SecondColumn
和ThirdColumn
为0
。并php
修改?
的数据,因此如果为空变量,则?
的数据为0
。然后使用相同的mysql查询。似乎这不是一个很好的解决方案。
其他解决方案是查询类似
的内容SELECT FirstColumn
WHERE SecondColumn = IFNULL(?,0)
AND ThirdColumn = IFNULL(?,0)
使用0
创建了mysql行,执行了查询。一切正常,但不会返回SecondColumn
或ThirdColumn
为0
的数组元素。我的查询有问题或可能IFNULL
无法以这种方式使用。请,建议需要纠正什么?或者可能是更好的解决方案?
尝试
SELECT FirstColumn
WHERE SecondColumn = 0
AND ThirdColumn = 0`
并获取具有0
值的数组。可能IFNULL
使用不正确......
答案 0 :(得分:1)
此查询将始终返回一行:
SELECT * FROM (
SELECT FirstColumn
FROM mytable
WHERE SecondColumn = ?
AND ThirdColumn = ?
UNION ALL
SELECT NULL -- code your "not found" value here
) x
LIMIT 1
UNION ALL
保留选择的订单行,因此如果第一个查询(您的原始查询)返回一行,即返回的行,否则返回由单独选择创建的行。
您可以为“默认”值选择任何值,只要它与FirstColumn
的数据类型兼容。