php 连接并获取所有行
$query = 'SELECT * FROM cdr';
$sql = $remotedbh->prepare($query);
$sql->execute();
$dblist = $sql->fetchAll(PDO::FETCH_ASSOC);
if($sql->rowCount() > 0){
header('Content-type: application/json');
echo json_encode($dblist,JSON_FORCE_OBJECT);
}
else {
echo 0;
}
问题是我的json看起来像这样
{
"0": {
"calldate": "2013-08-14 11:41:28",
"clid": "'"tet'" <1002>",
"src": "1002",
"dst": "8834404",
"dcontext": "from-internal",
"channel": "SIP'/1002-00000000",
"dstchannel": "IAX2'/voipms-6749",
"lastapp": "Dial",
"lastdata": "IAX2'/voipms'/14798834404,300,",
"duration": "7",
"billsec": "0",
"disposition": "NO ANSWER",
"amaflags": "3",
"accountcode": "",
"uniqueid": "1376498488.1",
"userfield": "",
"did": "",
"recordingfile": "",
"cnum": "",
"cnam": "",
"outbound_cnum": "",
"outbound_cnam": "",
"dst_cnam": ""
},
"1": {
"calldate": "2013-08-14 11:42:55",
"clid": "'"Rtest'" <1002>",
"src": "1002",
"dst": "9187755592",
"dcontext": "from-internal",
"channel": "SIP'/1002-00000001",
"dstchannel": "IAX2'/voipms-121",
"lastapp": "Dial",
"lastdata": "IAX2'/voipms'/19187755592,300,",
"duration": "494",
"billsec": "485",
"disposition": "ANSWERED",
"amaflags": "3",
"accountcode": "",
"uniqueid": "1376498575.3",
"userfield": "",
"did": "",
"recordingfile": "",
"cnum": "",
"cnam": "",
"outbound_cnum": "",
"outbound_cnam": "",
"dst_cnam": ""
},
"2": {
so on so forth
我还有一个问题,每次它提取所有信息时,一行只完成了一半,所以它也有问题,我想找到查询 5 分钟或更早的所有内容。
它包括您使用JSON_FORCE_OBJECT时的行号
删除它,它将成功返回为数组。
例如
echo json_encode($dblist);
>json_encode()
中的JSON_FORCE_OBJECT
选项强制数组为json对象,其索引为keys
。删除它可能会对您有用。
更新:
因为在使用样本数组进行测试时
$test = array(array("calldate"=> "2013-08-14","src"=> "1002"),
array("calldate"=> "2013-08-18","src"=> "1003")
);
echo json_encode($test,JSON_FORCE_OBJECT);
//Outputs :
//{"0":{"calldate":"2013-08-14","src":"1002"},"1":{"calldate":"2013-08-18","src":"1003"}}
和
echo json_encode($test);
//Outputs :
// Gave me [{"calldate":"2013-08-14","src":"1002"},{"calldate":"2013-08-18","src":"1003"}]
所以使用只是
echo json_encode($dblist);
应该做这个技巧