我可以从 PHP 的 SQLite 数据库中检索信息,但不能写入。例如,这段代码工作得很好:
$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));
当我从命令行而不是在 PHP 中执行上述 INSERT 时,我得到了预期的结果(tblname 中的一个新行):
$ sqlite3 foo.db
sqlite> INSERT INTO tblname VALUES(NULL, 'val1', 'val2');
这是我第一次使用 PDO(或 SQLite),因此将不胜感激。
最佳答案
检查运行 PHP 脚本的用户是否具有写入 foo.db 的权限。
此外(根据内存,如果我错了,请纠正我)用户将需要对包含 foo.db 的目录的写权限,否则 SQLite3 将抛出一个不太有用的错误消息。
关于php - 为什么我可以在 PHP 中的 SQLite 数据库上使用 SELECT 而不是 INSERT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039218/