You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDO更新SQLite数据后页面自动刷新两次的原因及解决办法

PDO更新SQLite时页面重复加载问题排查与解决

问题现象

使用PDO更新SQLite数据库时,只要数据实际发生变更,浏览器页面就会自动加载两次;如果更新的数据和现有数据一致,页面仅加载一次。无论是纯PHP页面还是表单触发请求,该现象均存在。但相同逻辑的代码在MariaDB(MySQL)环境下运行时,无自动刷新情况。

问题复现代码

SQLite环境代码

$db = new PDO("sqlite:$db_name");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$update_data = array(
    'animal' => 'cow',
    'name'   => 'Mary',
    'age'    => '4',
);

$stmt = $db->prepare( "UPDATE $db_table SET animal = :animal, name = :name, age = :age WHERE id = 48 " );
$stmt->execute($update_data);

echo $stmt->rowCount();

MariaDB(MySQL)环境代码

$db = new PDO("mysql:host=localhost;dbname=tst_animals", 'admin', 'admin' );
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$update_data = array(
    'animal' => 'cow',
    'name'   => 'Mary',
    'age'    => '4',
);

$stmt = $db->prepare( "UPDATE $db_table SET animal = :animal, name = :name, age = :age WHERE id = 5 " );
$stmt->execute($update_data);

echo $stmt->rowCount();

排查结果与解决方案

该问题并非代码逻辑导致,而是测试时使用了VS Code的Live Server Extension。在Firefox浏览器中,当SQLite数据库文件被修改时,该扩展会触发页面自动刷新。关闭Live Server Extension后,代码执行恢复正常,数据库更新后页面仅加载一次。

附:测试资源

提供完整可运行的PDO-SQLite示例代码及数据表结构,供测试参考。

内容的提问来源于stack exchange,提问作者Brebber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:00:16