php - 为什么我可以在 PHP 中的 SQLite 数据库上使用 SELECT 而不是 INSERT?

标签 php sql sqlite pdo

我可以从 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/

相关文章:

PHP:MY​​SQL 查询中的多个 AND 条件?

sql - 递归更新语句

sql - Oracle 分层总和(叶到根的距离)

iphone - 将 SQLite 客户端数据库与 MySQL 服务器数据库同步

c# - 使用多个文件中的任何CPU(x64/x86)

php - Zend_Db_Select 随机排序,兼容mssql/mysql

php - SQL - 执行此查询的最有效方式?

php simplexml xpath按属性匹配元素并按文本值匹配子元素

sql - CMS 的 MySQL 用户的推荐 SQL 权限

sql - 多种实体类型的最佳数据库设计