2013-10-24 27 views
0

在MySQL表我已經列命名爲「從」保留字,所以我嘗試要求符合backtips這樣錯誤與MySQL的請求,並保留字作爲列名

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; 

你能幫我嗎?

+1

你有兩個'where'子句。第二個'where'應該是'OR'在邏輯上是正確的。 – ComFreek

+0

可能是'AND',而不是'Or',但除此之外,發現......你應該做出答案,@comfreek。 –

+0

@MarcB是的,在我對該評論的最初修訂中,我確實有'AND'。現在寫一個答案。 – ComFreek

回答

1
  • 您的SQL說明三項WHERE條款。

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

這些問題使您的SQL查詢無效。

→通過AND小號更換你superfluos WHERE條款:

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') 

括號不應該是必要的,但我更喜歡將他們可讀性。

0

您的查詢無效的SQL。在查詢中只能有一個WHERE子句,並且您有3個。 只要您使用反引號(from),就可以保留「保留」列名稱。

您可能正在尋找這樣的事情:

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