2012-07-13 2 views
0

나는이를 게시하고,이 오류를 받고 있어요 :SQL 쿼리가 작동하지 않는 이유는 무엇입니까?

c.execute("""update resulttest set category=""" + key + ", value=""" + str(value)) 

OperationalError: (1054, "Unknown column 'composed' in 'field list'") 

내가 구성, 열 카테고리와 필드를 업데이트하려고하는 것은 단순히 카테고리의 값입니다.

왜이 오류가 발생합니까?

+0

당신은 무엇을 시도? 작성중인 실제 쿼리 문자열을 보았습니까? (힌트 : 정확하지 않습니다.) – jbindel

+1

또한 이런 식으로 일을하지 마십시오. 당신은 SQL 주입 문제에 스스로 빠져 있습니다. 대신 준비된 문을 사용하십시오. – jbindel

답변

2
// **mysql based** 
string cmd = "UPDATE resulttest SET category=\"" + key + "\", value=\"" + str(value) + "\""; 

// **sql based** 
string cmd = "UPDATE resulttest SET category='" + key + "', value='" + str(value) + "'"; 

// make sure you command output a escaped format 
// UPDATE resulttest SET category='test', value='test' 
// UPDATE resulttest SET category="test", value="test" 

c.execute(cmd); 
+0

닫기 '\ " – climbage

+0

@climbage Thank You, :) – GTSouza

+1

문자열 리터럴은 SQL 내에서 작은 따옴표로 묶어야합니다. – dbenham

2

쿼리 문자열을 생성 한 다음 실행하기 전에 흥미로운 것을 볼 수 있습니다. 너 그거 해봤 니?

인용구가 올바르게 작성되지 않은 것 같습니다. 즉, 아마 당신은 쿼리는 다음과 같이 할 :

update resulttest set category='somekey', value='composed'

는 나는 당신이 작성중인 쿼리 문자열을 얻을 것이다 무엇을 생각하지 않습니다.

3

구문을 읽기 쉽고 따옴표없이 이스케이프하지 않으려면 보간 및 매개 변수화 된 쿼리를 사용할 수 있습니다.

c.execute("""update resulttest set category=?, value=?""", (key, value))

https://stackoverflow.com/a/775399/594589

관련 문제