0

我有一个问题如何使用选择查询中的别名:

$timecheck = $db->query("SELECT DOE <= NOW() AS trigger FROM table WHERE a='$a'");
                if ($trigger != 0){
                    do  something
            }

这是使用别名的正确方法吗?我需要别名触发器来检查时间戳周期的验证。如果该时间段为 0 或更少,则意味着“触发器”将输出 1。在这种情况下,应执行另一个查询。

所以我希望我的问题足够清楚。如果有人可以提供帮助,我将不胜感激。多谢。

4

5 回答 5

1

trigger是保留关键字,因此您需要将其封装在反引号中。这将起作用:

SELECT DOE <= NOW() AS `trigger` FROM table WHERE a='$a'"
于 2012-04-04T09:14:46.880 回答
1

我认为“触发器”可能是一个保留字。尝试:

$timecheck = $db->query("SELECT (DOE <= NOW()) AS trggr FROM table WHERE a='$a' ");
$trggr = //getting the value
if ($trggr != 0){
    // something
}
于 2012-04-04T09:15:59.267 回答
0

一个IF()调用应该可以解决问题:

SELECT IF( DOE <= NOW(), 1, 0 ) AS `trigger` FROM ...

编辑:添加反引号以触发,如 Kristian 所述。

于 2012-04-04T09:13:01.250 回答
-1

我相信它应该是这样的......

$timecheck = $db->query("SELECT DOE <= NOW() AS trigger FROM table WHERE a='$a'");
while ($timecheck->fetchInto($row, DB_FETCHMODE_ASSOC)) {
    if ($row['trigger'] != 0){
      do something
    }
}
于 2012-04-04T09:11:19.353 回答
-2

其一般。有时我们也可以这样使用。它取决于服务器。(不使用“AS”)

“SELECT DOE <= NOW() 触发器从表 WHERE a='$a'”

于 2012-04-04T09:10:55.750 回答