2012-09-05 3 views
1

SQLite 및 PHP를 사용하여 Mac에서 간단한 money tracking 웹 응용 프로그램을 개발 중입니다. insert 문을 사용하여 매개 변수를 사용하여 sqlite db에 데이터를 삽입하는 데 문제가 있습니다. 정적 삽입 문을 쓸 수 있었고 제대로 실행 되었기 때문에 권한 문제가 아닙니다. 여기 내 코드는 다음과 같습니다.PHP Sqlite 및 PDO 삽입

try 
{ 
$databaseins = new PDO("sqlite:/datastores/trackmoney.db") or die("Could not open database"); 
$databaseins->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "INSERT INTO Transactions 
    (TransactionID, TransactionName, Expense, Description, TransactionDate, DateEntered, RecordedBy) 
VALUES (:TransactionID,:TransactionName,:Expense,:Description,:TransactionDate,:DateEntered,:RecordedBy);"; 
// below is a static insert that works 
//$sql = "INSERT INTO Transactions (TransactionID, TransactionName, Expense, Description, TransactionDate, DateEntered, RecordedBy) VALUES ('$guidTransactionID','Test',12.12,'test','3/2/2012','12/12/2012',1);"; 
$q = $databaseins->prepare($sql); 
$q->bindParam(':TransactionID', $guidTransactionID, SQLITE3_TEXT); 
$q->bindParam(':TransactionName', $strTransName, SQLITE3_TEXT); 
$q->bindParam(':Expense', $fltTransAmount, SQLITE3_FLOAT); 
$q->bindParam(':Description', $strTransDescrip, SQLITE3_BLOB); 
$q->bindParam(':TransactionDate', $strDateOfTrans, SQLITE3_TEXT); 
$q->bindParam(':DateEntered', "1/1/2013", SQLITE3_TEXT); 
$q->bindParam(':RecordedBy', 1, SQLITE3_INTEGER); 

$count = $q->execute() or die($databaseins->errorInfo()); 
print("<b>" + $count + "</b>"); 
$databaseins = null; 
} 
catch(PDOException $e) 
{ 
echo $e->getMessage();//this getMessage throws an exception if any 
} 

오류 메시지가 나타나지 않습니다. 변수의 모든 값은 설정되고 값을가집니다.

도움 주셔서 감사합니다.

+2

'bindParam' 대신'bindValue'를 사용해야합니까? – andrewsi

+2

SQLITE3_TEXT에 대해 SQLITE3_BLOB을 변경하면 어떻게됩니까? – JvdBerg

+0

당신은 둘 다 옳았습니다. bindValue로 변경하고 SQLITE3_BLOB를 SQLITE3_TEXT로 변경했습니다. 이제는 모두 훌륭하게 작동합니다! 감사! – Jeremy

답변

2

도움을 받으려면 andrewsi와 JvdBerg에게 감사드립니다. 내 문제에 대한 해결책은 bindParam 대신 bindValue를 사용하고 SQLITE3_BLOB를 SQLITE3_TEXT로 변경하는 것이 었습니다.