使用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
相关产品推荐
相关产品推荐

