0

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

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; 

你能帮助我吗 ?

4

2 回答 2

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

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

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

→ 用 s 替换多余的WHERE子句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')

括号应该不是必需的,但我更喜欢添加它们以提高可读性。

于 2013-10-24T15:09:37.593 回答
0

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

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

select *
from timesheets
where user_id = 1
AND `from` BETWEEN  '2013 - 01 - 01' AND '2013 - 10 - 31';
于 2013-10-24T15:09:12.803 回答