我有以下MySQL-Query:
$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ".$tid." AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";
变量$tid
可以为NULL,但应解释为“0”。是否可以直接在mysql查询中执行此操作,或者在执行查询之前是否应该使用这样的if子句?
if ($tid == NULL) {
$tid = 0;
}
谢谢!
答案 0 :(得分:1)
COALESCE(id, 0)
是你的朋友:)
了解更多here
答案 1 :(得分:1)
使用此条件:
"WHERE `tid` = ".($tid==null?0:$tid)."
答案 2 :(得分:0)
或者:
$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ".(!$tid ? 0 : $tid)." AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";
答案 3 :(得分:0)
如果您不喜欢ANSI SQL
,可以使用mysql IFNULL(id, 0)
答案 4 :(得分:0)
在查询中使用ifnull
。
$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ifnull(".$tid.",0) AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";