2016-03-22 41 views
0
$query="UPDATE `a`.`b` SET `aa` = ?, `ab` = ?, ac` = ?, `ad` = ?, `ae` = ?, `af` = ?, `ag` = ? WHERE `aa` = ? AND month(ac)= ?;"; 

查詢正在運行,但沒有更新數據庫...此準備的更新SQL查詢中的錯誤在哪裏?

+3

ac上缺少backtick? – user234461

+0

如果運行但不更新可能是不匹配的地方。 – scaisEdge

+0

準備語句中SQL文本末尾的分號?我不知道這是一個錯誤,但對我來說看起來很奇怪。並且'ac'標識符不會在語句中的第二個引用中轉義。看起來很奇怪,所有其他標識符都逃脫了。正如其他人指出的那樣,最明顯的問題當然是印刷錯誤,「ac」周圍的反作用力不平衡。 – spencer7593

回答

1
[..snip..] = ?, ac` = ?, `ad` = ?, [..snip.] 
       ^

公告遺漏什麼嗎?請注意,這些字段/表名中的NONE首先需要反引號。無論如何,它們都不是保留字。

+0

我不明白爲什麼這個答案收到downvote。奇怪的是,對同一列「ac」的引用在後面的引用中並沒有包含在引號中。 (就個人而言,我更喜歡在不需要時使用反引號,如果我要遵循這種使用反引號的模式,我會在任何地方使用反引號,如果我正在編寫ORM或其他包裝器/處理程序,則會生成SQL ORM會逃避所有的標識符。只是因爲這會比找出每個特定標識符是否需要轉義更快更容易。我的ORM將處理ANSI_QUOTES以及反引號。 – spencer7593

+1

它可能是downvoted,因爲有些人認爲回答明顯打字錯誤是獲得聲望點的一種便宜方式。 –