2014-07-24 1 views
0

PHP 5.3.19 및 SQLite3을 사용하고 있으며 PHP를 사용하여 테이블에 행을 추가 할 수없는 것 같습니다. 오류 메시지. 내가 선택을 할 수 있지만 INSERT가 작동하지 않습니다.PHP가 포함 된 SQLite3에 행을 추가 할 수 없습니다. 오류 메시지가 표시되지 않습니다.

코드 :

try { 
    $dbh = new PDO("sqlite:database.db"); 
    $dbh->exec("INSERT INTO TABLE_NAME (COL1, COL2, COL3) VALUES (null, $var1, $var2)");  
    echo "Row added"; 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
    echo "<br><br>Database <b>NOT</b> loaded successfully. "; 
    die("<br><br>Query Closed! $error"); 
} 

이 오류 메시지없이 실행하지만 항목이 저장되지 않습니다.

디렉토리는 webservd가 소유하고 있으며 webservd가 쓸 수 있으므로 실제로 어떤 문제인지 모르겠습니다. CLI를 통해 PHP 스크립트를 실행할 때도 아무 것도하지 않지만 수동으로 행을 입력하면 작동합니다.

PHP와 SQLite3에 대한 다른 게시물 (특히 Unable to write to a chmod 777 database file on SQlite3 via php 5.3.0)을 확인했지만 대답을 찾을 수 없습니다.

나는 무엇이 있습니까?

미리 도움 주셔서 감사합니다.

+1

PDO를 예외 모드로 설정하고 삽입이 실패 할 때 예외를 잡는 이유는 무엇입니까? 또한 exec()는 영향을받는 행 수를 반환합니다. 그 번호를 확인해 보는게 어때? 예외를 잡으면 잘못된 위치를 알 수 있습니다. CodeSlayer가 대답에 언급 한 것처럼 - 삽입되는 값을 인용하지 않았습니다. –

+0

예외 모드로 설정했지만 아무 것도 던지지 않습니다. – Cristina

+0

게시 한 코드는 예외 모드에서 PDO를 설정하는 방법이 아닙니다. 다른 문제는 SQL 인젝션에 취약하다는 것입니다. 당신은 그 변수들을 사용자 입력이나 무엇으로 받아 들여야합니까? –

답변

2

나는 뭔가를 놓친 것 같아요. 너희가 yer의 디렉토리뿐만 아니라 yer의 데이터베이스가 needin '쓰기 권한, 유닉스 또는 리눅스에서 beist 너희 날기의 sqlite가 될 것을 잊지 마십시오

$dbh->exec("INSERT INTO TABLE_NAME (COL1, COL2, COL3) VALUES (null, '$var1', '$var2')");

+0

예, 둘 다 문자열입니다 (문자 및 varchar). 변수를 ''에 넣었지만 아무 것도 변경하지 않았습니다. – Cristina

+0

CLI에서 실행할 때 작동하지 않지만 웹 페이지를 사용하면 작동합니다! 고마워요. – Cristina

0

: 당신의 COL2와 COL3이 문자열 인 경우는 같은 보일 것이다 . Arrrr ...

+0

예, 해적 각하, 이미 쓰기 권한이 있습니다. – Cristina

-1

[예 : $query = $db->query("INSERT INTO table (column1, column2...) VALUES ('$value1','$value2'...)"]을 입력 한 후 마지막 오류 코드 sqlite3 [예 : $db-> LastErrorCode());]과 함께 "OR DIE"절을 추가하십시오. 이렇게하면 오류 코드가 있으면 얻을 수 있습니다.

+0

코드를 포맷하십시오. –