2011-08-08 4 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 플래그를 추가해야합니다.

참고 : 분명히 여러 개의 명령문을 사용할 수있게 설정하면 SQL 쿼리의 위험이 있으므로 모든 쿼리에서 cfqueryparam 또는 addParam을 사용해야합니다.

+0

감사합니다. 이 기능을 활성화하고 모든 서비스를 다시 시작했습니다. 나는 여전히 SQL 오류가 발생합니다. 나는 문장들 사이에 빈 줄이 필요하다고 생각하고, #chr (13) #이 트릭을하고있는 것처럼 보이지 않는다. 첫 문장의 끝 부분에서 오류가 발생하고있다. – Mohamad

+0

새 행이 아니고 세미콜론 즉 ";"입니다. – Leigh

+0

세미콜론을 추가하여 구문을 분리하려고 했습니까? –

관련 문제