Почему я могу использовать SELECT, но не INSERT для базы данных SQLite в PHP? - PullRequest
2 голосов
/ 11 января 2010

Я могу получать информацию из базы данных SQLite на PHP, но не записывать в нее. Например, этот код работает отлично:

$db = new PDO("sqlite:foo.db");
$rowCount = $db->query("SELECT COUNT(*) FROM tblname;")->fetchColumn(0);
echo $rowCount; // works as it should

Однако следующий фрагмент кода приводит к ошибке «невозможно открыть файл базы данных»:

$db = new PDO("sqlite:foo.db");
$db->exec("INSERT INTO tblname VALUES(NULL, 'val1', 'val2');") or die(print_r($db->errorInfo(), true));

Когда я выполняю вышеуказанную INSERT из командной строки, а не из PHP, я получаю ожидаемые результаты (новая строка в tblname):

$ sqlite3 foo.db
sqlite> INSERT INTO tblname VALUES(NULL, 'val1', 'val2');

Я впервые использую PDO (или SQLite в этом отношении), поэтому любая помощь будет принята с благодарностью.

Ответы [ 2 ]

10 голосов
/ 11 января 2010

Убедитесь, что пользователь, выполняющий скрипт PHP, имеет разрешение на запись foo.db.

Также (из памяти, поправьте меня, если я ошибаюсь), пользователю потребуется разрешение на запись в каталог, содержащий foo.db, иначе SQLite3 выдаст не очень полезное сообщение об ошибке.

2 голосов
/ 11 января 2010

У вас, вероятно, нет доступа к файлу sqllite. Проверьте сообщение об ошибке, которое вы получите из PDO с помощью PDO :: errorInfo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...