如何使用 php 更新 SQLite 表中的数据?
Posted
技术标签:
【中文标题】如何使用 php 更新 SQLite 表中的数据?【英文标题】:How to update data in SQLite table using php? 【发布时间】:2019-06-21 15:54:18 【问题描述】:我正在编写如下所示的 php 代码:
class MyDB extends SQLite3
function __construct()
$this->open('database/Podcast.db');
$db = new MyDB();
$f = $mp4_files[$_POST['id']];
$parts = pathinfo($f);
switch ($parts['extension'])
/* Conversion of mp4 into mp3 is happening */
print_r($f); // Line Z
$result = $db->exec("UPDATE Podcast_Export SET Status = 'Completed' WHERE House_number = '" . $f . "'"); // Line A
if ($result == FALSE)
echo "Error in fetch " . $db->lastErrorMsg(); // Line M
在 Z 行,在控制台上会打印 36031P.mp4(当从 第一个表格行(从 UI)中单击“Go”按钮时 )
在 Z 行,在控制台上打印 hello.mp4(当从 第 2 表行(从 UI)单击“Go”按钮时)
问题陈述:
我在 A 行有一个查询以更新 Podcast_Export 表,但它不工作并在 M 行抛出错误:
Error in fetch database is locked
此时,我在 Podcast_Export 表中有以下内容:
我使用的SQLite版本是3.27.2
【问题讨论】:
问题是,提交后你会在哪里使用这些值?data-id="<?php echo $key; ?>"
没用,如果你只是使用 PHP
这是个好问题。我认为我的代码中有一个小错误。请记住,当新的mp4 files
进入目录时,Podcast_Export
表中的状态应该是Go
,我们添加了以下查询:foreach ($mp4_files as $value) $count = $db->querySingle("SELECT COUNT(*) as count FROM Podcast_Export WHERE House_number = '".$value."'"); if($count <= 0) $db->exec("INSERT INTO Podcast_Export (House_number,Status) VALUES ('".$value."', 'Go')");
当 mp4 文件转换为 mp3 时,状态应该在里面完成Podcast_Export 表。
它很难理解..你必须分享完整的例子
@devpro 我已经更新了我的问题。让我知道如何解决该错误。
@flash 尝试在脚本末尾添加$db->close();
和unset($db);
以释放附加数据库文件上的操作系统文件锁定,也许这是你的问题。
【参考方案1】:
来自php SQLITE3 doc
SQLite3::exec — 对给定数据库执行无结果查询
它返回一个布尔值。 “无结果”查询通常是 INSERT、UPDATE、DELETE,但不是 SELECT。
您可能想研究如何使用querySingle 来获得所需的结果。
【讨论】:
【参考方案2】:通常,当您有一个打开的数据库进程时,数据库被锁定。 请查看以下网址,希望对您有所帮助。
Database locked while trying to access from PHP script
【讨论】:
如果您认为这是另一个问题的重复,那么您可以发表评论。仅仅指向另一个问题的答案几乎没有什么作用。以上是关于如何使用 php 更新 SQLite 表中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 在 MYSQL 中的数据库表中插入、更新、删除记录时创建日志