2015-01-03 2 views
1

с помощью PHP PDO я выполнить этот запросКак понять/потреблять выход JSON из PHP сценария

SELECT Name, Latitude, Longitude, Begin, End FROM VenueData 

И получать данные

$data = $sth->fetchAll(); 

Затем выход

header("Content-type: application/json"); 
print(json_encode(array('venues'=>$data))); 

Однако выход является странным,

{"venues":[{"Name":"Flintstone1","0":"Flintstone1","Latitude":"57","1":"57","Longitude":"-124","2":"-124","Begin":"8","3":"8","End":"14","4":"14"}]} 

Кажется, что для каждого столбца в запросе выбора есть два ключа, один по имени и один по индексу 0-n) в json. Я не сталкивался с этим раньше, почему это происходит?

ответ

7

Возможно, это связано с тем, что вы используете.

Проверил: PHP Manual PDOStatement::fetchAll

По умолчанию это будет использовать PDO :: FETCH_BOTH, который включает в себя numerative и ассоциативный массив результатов.

(Выборки опции стиля можно найти здесь: PHP Manual PDOStatement::fetch)

В зависимости от того, что вы хотите, вы можете использовать:

$data = $sth->fetchAll(PDO::FETCH_ASSOC); 

Или:

$data = $sth->fetchAll(PDO::FETCH_NUM); 
0

Изменить это:

$data = $sth->fetchAll(); 

К настоящему времени

$data = $sth->fetchAll(PDO::FETCH_ASSOC); 
Смежные вопросы