2011-08-08 76 views
2

我嘗試編譯MySQL的一些語句,並在相同的請求執行它們,但我不斷收到一個MySQL語法錯誤:我是否需要每個MySQL語句的新查詢對象?

local.sql = ""; 
for (local.i in this.hitArray) 
{ 
    local.sql &= "UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = #local.i.postId#;"; 
} 
local.service.setSQL(local.sql); 

原始SQL轉儲(local.sql VAR):

UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;

看起來查詢在第一個語句結束時顯示正確。

回答

5

MySQL在默認情況下禁用多個語句以防止sql注入。您必須將allowMultiQueries標誌添加到連接字符串以啓用它們。

注意:顯然,如果啓用多個語句,則非常重要的是,所有查詢都使用cfqueryparam或addParam,因爲您現在面臨着SQL注入的風險。

+0

謝謝。我啓用了這個功能,並重新啓動了我的所有服務。我仍然收到一個SQL錯誤。我認爲這些陳述之間需要有一條空白的界限,而#chr(13)#似乎並沒有這樣做......錯誤發生在第一個陳述的最後。 – Mohamad

+0

不是新行,而是分號,即「;」。 – Leigh

+0

您是否嘗試添加分號來分隔語句? –