我有以下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 - PHP SQLite JSON数据重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3908362/