2012-12-04 4 views
2

제 응용 프로그램에서 SQLite3을 사용하고 있으며 지금은 DELETE가 작동하려고합니다. 아래의 코드는 나에게 좋은 것처럼 보입니다. $ producerId가 ID를 보유하고 있는지 확인했습니다. 당연히 데이터베이스에 있습니다.게시물은 데이터베이스에서 삭제되지 않습니다

그러나 쿼리 실행 결과로 false가 반환되고 게시물이 삭제되지 않습니다.

내가 뭘 잘못하고 있니?

public function deleteProducer($producerId) { 

    $sql = "DELETE FROM 'producers' WHERE 'producerid' = $producerId"; 

    $result = $this->m_db->exec($sql); 

    return $result; // <- 0 (fails) 
} 

데이터베이스 구조는 :

Table: producers 
Fields: id(INTEGER PRIMARY KEY), producerid(INT), name(TEXT), address(TEXT), zipcode(INT), town(TEXT), url(TEXT), imgurl(TEXT) 
+4

을'producers'' 당신이 역 따옴표 **'** 테이블 또는 열을 지정을 사용하지 않는 '에서 삭제? 나는 sqlite를 직접 사용하지 않았기 때문에 표식에서 벗어날 수 있었다. – Dale

+0

왜 당신이 시도하고있는 것 대신 producerid = $ producerId'에서'DELETE FROM producer producer '를 시도해 보라. ** No Quotes ** –

답변

1

SQL에서 작은 따옴표는 문자열에 사용됩니다.

의미 (예 : 테이블 이름과 같은) 상황에서 취소하면 SQLite는이 대신 식별자의 문자열을 받아 들일 것입니다,하지만 WHERE 상태에서, 문자열이 가 허용은, 그래서 'producerid'은 문자열로 해석됩니다. 식별자에 대한

은 큰 따옴표 사용 : 나는 문제가 여기에있다 생각

$sql = 'DELETE FROM "producers" WHERE "producerid" = $producerId'; 
+0

해결했습니다. 고마워요! – holyredbeard

관련 문제