0

我有以下 MySQL 查询:

$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ".$tid." AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";

该变量$tid可以为 NULL,但应解释为“0”。是否可以直接在 mysql-query 中执行此操作,还是在执行查询之前我应该​​有这样的 if 子句?

if ($tid == NULL) {
    $tid = 0;
}

谢谢!

4

5 回答 5

1

COALESCE(id, 0)在 mysql 中是你的朋友 :)

在这里阅读更多

于 2012-06-02T11:53:09.283 回答
1

使用这个条件:

"WHERE `tid` = ".($tid==null?0:$tid)."
于 2012-06-02T11:56:29.257 回答
0

或者:

$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ".(!$tid ? 0 : $tid)." AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";
于 2012-06-02T11:56:18.443 回答
0

如果你不喜欢ANSI SQL你可以使用 mysqlIFNULL(id, 0)

于 2012-06-02T11:57:41.170 回答
0

ifnull在您的查询中 使用。

$sql = "SELECT `eid` FROM `"._ST_EVENT."` WHERE `tid` = ifnull(".$tid.",0) AND DATE(`zeitpunkt`) >= CURDATE() ORDER BY `zeitpunkt` ASC;";
于 2012-06-02T11:58:52.670 回答