PHP SQLite JSON 数据重复

标签 php json serialization sqlite

我有以下 PHP 代码:

$testMessage = "TESTMESSAGE";

$db = new SQLite3('messages.sq3');
$db->exec('CREATE TABLE messages(id INTEGER PRIMARY KEY, message CHAR(255));');
$db->exec("INSERT INTO messages (message) VALUES ('$testMessage');");

$results = $db->query('SELECT * FROM messages ORDER BY id DESC LIMIT 5');

while ($row = $results->fetchArray()) {
    print_r($row);
}

生成的 print_r:

Array ( [0] => 1 [id] => 1 [1] => TESTMESSAGE [message] => TESTMESSAGE )

为什么这些数据是重复的?这只是数组的呈现方式还是真的有 TESTMESSAGE 字符串的两个副本?检查 sqlite 文件,我只看到一个实际存储在那里的文件。我正在尝试通过 JSON 序列化输出,并且这种重复会一直进行到序列化。

最佳答案

默认是将带有数字和字符串键的数据合并到同一个数组中。

您需要使用 $results->fetchArray(SQLITE3_NUM)$results->fetchArray(SQLITE3_ASSOC) 分别获取数字和字符串键。默认值是 SQLITE3_BOTH,我一直讨厌它。

关于PHP SQLite JSON 数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908362/

相关文章:

php - 在 PHP DOM 中,在递归函数中获取元素/节点深度

android - 解析数据时出错 - 字符串无法转换为 JSONObject

java - Java 中反序列化 ArrayList

Java 序列化 - java.io.InvalidClassException 本地类不兼容

.net - 内置的基于 BinaryFormatter 的 .Net 序列化有哪些不足?

javascript - 第一次集成支付网关,php集成PayUmoney后显示黑页

javascript - 简单的ajax给出status == 0错误

php - 我只想在 Windows 的命令行中运行 PHP。如何开始?

json - 使用 Scala 简单将 JSON 转换为 XML,然后将 XML 转换为 JSON

javascript - NodeJS 和 MongoDB - ObjectId 数组如何返回对象