一尘不染

为什么我可以在PHP的SQLite数据库上使用SELECT但不能使用INSERT?

sql

我能够从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),因此对您的帮助将不胜感激。


阅读 168

收藏
2021-03-08

共1个答案

一尘不染

检查运行PHP脚本的用户是否具有写foo.db的权限。

同样(从内存中,如果我错了,请纠正我),用户将需要在包含foo.db的目录上具有写权限,否则SQLite3将抛出一条不太有用的错误消息。

2021-03-08