mysql请求和保留字作为列名出错

时间:2013-10-24 14:59:32

标签: php mysql

在mysql表中我有一个以保留字“from”命名的列,所以我尝试使用这样的backtips请求

SELECT * FROM timesheets  WHERE user_id = 1 WHERE `from` <= 2013-10-31 WHERE `from` > 2013-01-01

但它不起作用,有一个错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

  • 您的SQL语句中有三个WHERE子句。

    WHERE user_id = 1 WHERE `from` <= 2013-10-31 WHERE `from` > 2013-01-01
    
  • 您没有引用日期。

这些点使您的SQL查询无效。

→用WHERE s:

替换你的超级流行AND条款
WHERE user_id = 1 AND (`from` <= '2013-10-31' AND `from` > '2013-01-01')

→您甚至可以使用BETWEEN ... AND ...日期:

WHERE user_id = 1 AND (`from` BETWEEN '2013-01-01' AND '2013-10-31')

括号不一定是必要的,但为了便于阅读,我更喜欢添加括号。

答案 1 :(得分:0)

您的查询是无效的SQL。查询中只能有一个WHERE子句,并且您有3个。 至于“保留”列名称,只要你输入反引号(from)就可以了。

你可能正在寻找这样的东西:

select *
from timesheets
where user_id = 1
AND `from` BETWEEN  '2013 - 01 - 01' AND '2013 - 10 - 31';