Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将sqlite数据转换为json_Php_Json_Sqlite - Fatal编程技术网

使用php将sqlite数据转换为json

使用php将sqlite数据转换为json,php,json,sqlite,Php,Json,Sqlite,我正在尝试将sqlite查询转换为json。下表中有两列名称和年龄。当我打印查询时,格式似乎不正确。为什么我会得到一个额外的键值对 <?php $db = new SQLite3('info.db'); $results = $db->query('SELECT * FROM info'); while ($row = $results->fetchArray()) { $jsonArray[] = $row; } echo json_encode($jsonAr

我正在尝试将sqlite查询转换为json。下表中有两列名称和年龄。当我打印查询时,格式似乎不正确。为什么我会得到一个额外的键值对

<?php
$db = new SQLite3('info.db');

$results = $db->query('SELECT * FROM info');
while ($row = $results->fetchArray()) {

    $jsonArray[] = $row;
}

echo json_encode($jsonArray)
?>
期望输出

    [{"name":"billy","age":"20"}]
如果你使用pdo,你可以使用这个

$result = $sth->fetch(PDO::FETCH_OBJ);

$sth是您的查询

更改查询以仅获取所需的列:

$results = $db->query('SELECT name,age FROM info'); 
// if you want all column then only use *
然后使用SQLITE3_ASSOC

参考资料:-

参数

模式

控制如何将下一行返回给调用方。这 值必须是SQLITE3\u ASSOC、SQLITE3\u NUM或 SQLITE3_两者

SQLITE3_ASSOC:返回按中返回的列名索引的数组 相应的结果集

SQLITE3_NUM:返回按中返回的列编号索引的数组 相应的结果集,从第0列开始

SQLITE3_BOTH:返回一个按列名和编号索引的数组 在相应的结果集中返回,从第0列开始

举个例子:

<?php
    $db = new SQLite3('info.db');
    $results = $db->query('SELECT * FROM info');
    $data = array();
    while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
        array_push($data, $row);
    }
    echo json_encode($data);
?>

fetchArray同时获取关联和数值数组索引。它默认为SQLITE3_两者,使用SQLITE3_ASSOC或SQLITE3_NUM代替。cloud916检查并尝试下面给出的答案,让我们知道是否有任何一个适合您
while($row = $results->fetchArray(SQLITE3_ASSOC)){ 
<?php
    $db = new SQLite3('info.db');
    $results = $db->query('SELECT * FROM info');
    $data = array();
    while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
        array_push($data, $row);
    }
    echo json_encode($data);
?>