在FROM_UNIXTIME中使用AND / OR mysql命令

时间:2011-01-15 09:43:11

标签: mysql

尝试在php / mysql中选择一个查询以获取日历中的“Upcoming Items”。我们将数据库中的日期存储为unix时间。这是我的查询现在的样子

SELECT *
FROM `calendar`
WHERE (`eventDate` > '$yesterday') 
OR (FROM_UNIXTIME(eventDate, '%m') > '$current_month' AND `$yearly` = '1')
ORDER BY `eventDate`
LIMIT 4

这在'where子句'中给了我一个错误“Unknown column”'。我确定它与我使用括号(我以前从未在查询中使用过)和FROM_UNIXTIME命令有关。

有人能帮帮我,让我知道我是怎么搞砸的?

谢谢!

2 个答案:

答案 0 :(得分:2)

这对我来说看起来很可疑:

`$yearly`

$ year的价值是多少?它是空的吗?当您使用反引号时,MySQL会将内容视为列的名称。

也许你的意思是创建一个字符串,在这种情况下你应该使用不同类型的引用:

'$yearly' = '1'

或许你打算引用专栏yearly

yearly = '1'

另一个提示是在插入PHP变量之后打印SQL查询,因为这有时可以更容易理解来自MySQL的错误消息。我想你的查询看起来像这样:

SELECT *
FROM `calendar`
WHERE (`eventDate` > '1295071200') 
OR (FROM_UNIXTIME(eventDate, '%m') > '1' AND `` = '1')
ORDER BY `eventDate`
LIMIT 4

可疑部分在这里:

`` = '1'

答案 1 :(得分:2)

您是否有名为$ annual?的列,请尝试删除美元符号