无法使用 PHP 添加 sqlite 条目

Posted

技术标签:

【中文标题】无法使用 PHP 添加 sqlite 条目【英文标题】:Cannot add sqlite entry using PHP 【发布时间】:2017-11-26 05:09:03 【问题描述】:

我有一个有表的数据库。我编写了一个简单的python程序来写入数据库,如下所示。

 import sqlite3
 import sys
 arg = sys.argv
 handle= sqlite3.connect('new_test.db')
 print "Opened database successfully";
 print type(arg[1]), arg[2] 
 handle.execute("INSERT INTO RECORD (ID,NAME,PROJECT,) \
    VALUES ('%s','%s','%s')" %(str(arg[1]), str(arg[2]),str 
 (arg[3]));
 print "after execute"
 handle.commit()
print "Records created successfully";
handle.close()

这在命令行 python insert.py arg1 arg2 arg3 中可以正常工作

现在我用 php 代码做同样的事情:

$data=shell_exec("python insert.py $id $name $project").

它不会向表中添加条目。执行在handle.execute附近停止

从打印语句中检查。我应该改变或改变什么?

是因为某些权限还是我必须添加任何内容? 注意:条目不重复

编辑:我尝试的一些其他可能有用的东西:

    我尝试通过 PHP 调用脚本,但在数据库中添加了静态字符串参数。还是没通过。

    我从 python 程序中注释掉了handle.execute(),程序现在执行到最后。 所以问题出在那个指令上。

    检查了环境变量和python模块,都符合预期。

【问题讨论】:

您可以在没有 python 的情况下使用 SQLite 进行操作...它是强制性的吗?并首先比较命令是否相同。 @FieryCat 是的 sqlite 也可以用 PHP 完成。但我更喜欢python。究竟是哪个命令? 您是从命令行还是通过 Web 请求运行 PHP 脚本? 来自网页 我不知道 python,但这看起来很奇怪 handle.execute("INSERT INTO RECORD (ID,NAME,PROJECT,) \ VALUES ('%s','%s','%s','%s','%s')" %(str(arg[1]), str(arg[2]),str (arg[3])); 看起来像 printf() 语法,但你只传递 3 个参数并指定 3 列但有 4 个 %s 然后继续3 args 出于某种原因。 【参考方案1】:

尝试下一个:

$pdo = new \PDO('sqlite:new_test.db');
$query = $pdo->prepare("INSERT INTO RECORD (ID, NAME, PROJECT)
    VALUES (:id, :name, :project)");
$query->execute(array(
    ':id' => $id, 
    ':name' => $name, 
    ':project' => $project
));

【讨论】:

尝试使用权限chmod -R 777 new_test.db... 并确保 DB 文件未被任何其他应用程序打开 db python和php文件拥有所有权限。此外,脚本在提交后关闭数据库,因此它不应该打开

以上是关于无法使用 PHP 添加 sqlite 条目的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 6 和 SQLite - 无法创建条目 PK 之前删除的条目

无法从 iOS 添加条目到 MySQL

FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束

无法使用 dict 类型作为字段条目将数据添加到 InfluxDB

无法在 android 中使用 sqlite 添加唯一行

无法使用 SimpleAdapter 刷新 ListView