2013-03-31 3 views
0

Я хочу проанализировать следующую кучу объектов JSON в PHP. Но в некоторой степени это не работает.Разбор группы объектов JSON в PHP

[ 
{"latitute":16.8045558404827,"longitude":36.9140487536788, 
    "missionid":0,"status":0,"waypointid":0}, 
{"latitute":-14.093939943107658,"longitude":21.093734242022038, 
    "missionid":0,"status":0,"waypointid":0} 
] 

.

$obj = json_decode($_POST["waypoints"]); 


foreach ($json->items as $item) { 

    echo($item->{'longitude'}); 
    echo($item->{'latitude'}); 
    echo($item->{'missionid'}); 
    $query="INSERT INTO dio.wpoint (longitude, latitude, missionid, status,) VALUES ("$item->{'longitude'}.","$item->{'latitude'}.",41)"; 
    mysql_query($query);  

} 
+6

'latitute' возможно с ошибками? –

+0

'mysql_query()' имеет механизм проверки ошибок 'mysql_error()'. Это позволяет вам узнать, что пошло не так. –

+2

Использовать '$ obj' в цикле for, а не' $ json'? – jleft

ответ

1

Вы используете $json в качестве переменной в цикле Еогеасп, а не $obj. Вам также не нужно будет обращаться к члену items, поскольку он не существует в вашем JSON.

В запросе присутствуют только три значения, когда должно быть четыре, чтобы соответствовать именам столбцов. Я не уверен, какие именно значения вы хотите в своем запросе, но я сделал обоснованное предположение.

$obj = json_decode($_POST["waypoints"]); 

foreach ($obj as $item) { 
    echo $item->{'longitude'}; 
    echo $item->{'latitude'}; 
    echo $item->{'missionid'}; 

    $query="INSERT INTO dio.wpoint (longitude, latitude, missionid, status) 
      VALUES (" . $item->{'longitude'} . ", " . 
         $item->{'latitude'} . ", " . 
         $item->{'missionid'} . ", " . 
         $item->{'status'} . 
        ")"; 
    mysql_query($query);  
} 

Как упоминалось в комментариях, существуют некоторые несоответствия с орфографией, которые должны быть исправлены. В зависимости от вашей версии PHP mysql_query может быть устаревшим, поэтому стоит посмотреть на альтернативы, такие как MySQLi и PDO. Ваш запрос также может быть уязвим для SQL-инъекций, поэтому следует указать руководство How to prevent SQL injection in PHP?.

+0

Извините, что я весь день за день! Комментируя, я не забуду вернуться через 5 часов –

+0

Не волнуйтесь, спасибо! – jleft

2

Mysql не позволяет оставлять запятые, насколько я знаю.

INSERT INTO dio.wpoint (longitude, latitude, missionid, status,) 

должен быть

INSERT INTO dio.wpoint (longitude, latitude, missionid, status) 
Смежные вопросы