sqlite 如何在PHP中显示WAL状态?

n8ghc7c1  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(157)

我的PHP代码:

$db = new PDO("sqlite:$dbname");
$db->exec("PRAGMA journal_mode = WAL;");

字符串
如何显示WAL的状态“echo....."?
提前谢谢你的提示。

omvjsjqw

omvjsjqw1#

您可以query值:

PRAGMA journal_mode;

字符串
例如,结果:“删除”。
PRAGMA schema.journal_mode;[...]此杂注的第一种形式查询数据库的当前日志记录模式。如果省略database,则查询“main”数据库。* (ref)*

SQLite PRAGMA journal_mode示例

PRAGMA journal_mode = WAL;
PRAGMA journal_mode;


| journal_mode |
| ------------ |
| wal |
| wal |

  • (两次相同的结果。)*

PHP PDO示例

请参阅以下PHP代码示例,了解如何将其应用于带有SQLite3驱动程序的PDO:

$dbname = ':memory';
$db = new PDO("sqlite:$dbname");
$db->exec("PRAGMA journal_mode = WAL;");

$wal_status = ( 
    $db
    ->query('PRAGMA journal_mode;')
    ->fetch()['journal_mode']
);

echo $wal_status, "\n"; # "wal\n"


或者,您可以使用query()来更改日记模式并直接获取新的日记模式:

$dbname = ':memory';
$db = new PDO("sqlite:$dbname");
$journalMode = (
    $db
    ->query("PRAGMA journal_mode = WAL;")
    ->fetch()['journal_mode']
);

echo $journalMode, "\n"; # wal


second form 文档比较:
第二个表单更改“database”的日记模式,或者如果省略“database”,则更改所有附加数据库的日记模式。返回新的日记模式。如果无法更改日记模式,则返回原始日记模式。* (ref)*
由于这两个示例都没有通过名称指定“database”,因此这是针对$db PDO对象中的单个附加数据库,在示例中特别是:memory(您可能在那里有一个文件名)。
如果您对有关附加多个数据库的主题感兴趣,请参阅answer to "PDO / SQLite: Single query covering two related databases"

相关问题