2009-10-19 3 views
0

작동하도록 sqlite3에서 준비된 문을 가져 오는 데 문제가 있습니다. Perl과 Perl DBD 프레임 워크로 작업하고 있습니다. 아래 코드는 제가 사용됩니다 : 그 오류를 이유는 무엇입니까SQLite가 준비된 명령문의 구문에 대해 불평하는 이유는 무엇입니까?

 
DBD::SQLite::db prepare failed: near "SET": syntax error(1) at dbdimp.c line 
271 at database.pm line 80. 

:

#This is a function I have defined 
sub query([email protected]){ 
    my $st = $db->prepare(shift); 
    $st->execute(@_); 
} 

#And it is used like so 
query("UPDATE rooms SET name = ?, SET capacity = ? WHERE id = ?", 
    $name, $capacity, $id); 

나는, 나는 다음과 같은 오류를 얻을 때? 준비된 문장을 사용하지 않고 시도하면 작동합니다. UPDATE 쿼리를 제외하고 내 응용 프로그램의 다른 모든 준비된 문이 작동합니다.

+0

없이

UPDATE rooms SET name = ?, capacity = ? WHERE id = ? 

입니다. 그러한 이름은 pragma 용으로 예약되어 있으므로 그렇게하지 마십시오. 게다가 모듈을 최상위 네임 스페이스에 두는 것은 어쨌든 나쁜 습관입니다. 당신은 모듈'Config.pm' 중 하나를 명명하게 될 것입니다. –

+0

이러한 종류의 문제가 발생하면 SQL 문을 데이터베이스 셸에서 직접 실행하여 문에 대한 문제인지 또는 Perl 관련 문제인지 확인합니다. –

+0

나는이 페이지를 나와 함께 앉아 있었고, 나는 여전히 무엇이 잘못되었는지를 알 수 없었다! http://www.sqlite.org/lang_update.html – Marius

답변

11

귀하의 질의 표준을 사용하여 (그리고 SQLite는의) UPDATE 구문은 반복 SET 당신이 당신의 모듈에 대한 모든 소문자로 구성된 이름을 사용하는 것 같습니다

관련 문제