Richie Marquez
Richie Marquez

Reputation: 2318

Why can I use SELECT but not INSERT on a SQLite database in PHP?

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

Answers (2)

NA.
NA.

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

oops
oops

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

Related Questions