Reputation: 2318
I am able to retrieve information from a SQLite database in PHP, but not write to it. For example, this code works perfectly fine:
$db = new PDO("sqlite:foo.db");
$rowCount = $db->query("SELECT COUNT(*) FROM tblname;")->fetchColumn(0);
echo $rowCount; // works as it should
However, the following snippet results in an, 'unable to open database file' error:
$db = new PDO("sqlite:foo.db");
$db->exec("INSERT INTO tblname VALUES(NULL, 'val1', 'val2');") or die(print_r($db->errorInfo(), true));
When I perform the above INSERT from the command line rather than in PHP, I get the expected results (a new row in tblname):
$ sqlite3 foo.db
sqlite> INSERT INTO tblname VALUES(NULL, 'val1', 'val2');
This is my first time using PDOs (or SQLite for that matter) so any help would be greatly appreciated.
Upvotes: 3
Views: 5057
Reputation: 6579
You probobly have no write acccess to the sqllite file. Check the error message you get form PDO with PDO::errorInfo
Upvotes: 2
Reputation: 5729
Check that the user running the PHP script has permission to write foo.db.
Also (from memory, correct me if I'm wrong) the user will need write permission on the directory containing foo.db, or else SQLite3 will throw a not-so-useful error message.
Upvotes: 12