当前位置: 首页 > 面试题库 >

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

慕容典
2023-03-14
问题内容

我能够从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将抛出一条不太有用的错误消息。



 类似资料:
  • 当我试图在Django管理面板中查看我的产品时,出现以下错误。在我的产品模型中,我有“models.DecimalField”,我认为这很重要。Django错误描述 base.py第34行是一个函数: 更多信息:无效操作at/admin/products/products/ 产品/admin.py 来自django。contrib导入管理 从…起进口产品模型 管理地点登记册(产品)

  • 我的表单已提交,但未存储在表中。如果我对请求执行dd(),则数据在中,但当我执行save()时,它不会按预期工作。我想在backoffice表单上添加用户,仅包含姓名、电子邮件、用户类型和密码。 编辑:我将问题图像更改为代码,以便您更容易理解,很抱歉第一次尝试。编辑2:现在出现了更多的两件事,密码验证确认总是错误的,如果我跳过验证,则会出现以下错误: 对未定义方法App\User::forget(

  • 即使我的帐户可以访问SSMS中的db,并具有sysadmin权限。 检查SQL日志,每当登录失败时,我都可以看到这条消息: 我尝试向和添加,但没有什么不同 但我也试过 以同样的结果

  • 我可以用“小”函数定义“大”函数: 我可以这么说: 另一方面,如果我想多次使用同一个函数并为其使用名称,我就会遇到问题: 最后一行是禁止的。留言: 为什么?对我来说,plus2和plus2是一样的东西? 这篇文章有一个答案,建议在我的例子中使用::plus2。这在技术上有帮助,但不能解释这两种功能之间的区别。

  • 问题内容: 我想创建一个使用PDO与MySQL交互的类。我可以使用PDO创建一个新的MySQL表吗? 问题答案: 是的你可以。 该部分是PDO构造函数的第一个参数,不必具有数据库名称。您可以简单地使用。然后,如果您具有适当的特权,则可以使用常规SQL命令创建数据库和用户等。 以下是install.php的示例,它以root用户身份登录,创建一个数据库,一个用户,并向用户授予对新创建的数据库的所有特