如何使用 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 中的数据库表中插入、更新、删除记录时创建日志

如何使用php更新mysql表中的特定表行[重复]

如何使用 PHP 从 HTML 表中获取当前内容

如何通过在 sqlite 表中引用自身来更新 json 对象值?

如何删除sqlite数据库表中的一行?

如何重命名 SQLite 数据库表中的列?