无法使用 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 的情况下使用 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 之前删除的条目
FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束