Расшифровка JSON в PHP для вставки в mySQL

Я пишу php-файл, чтобы получить данные из ODK Aggregate (программы управления опросами) на сервер mySQL.

Пока я могу получить данные из ODK в mySQL, но эти данные не декодируются правильно.

Из исходной базы данных, которая выглядит следующим образом (экспортируется из ODK):

    name            age     meta:instanceID
Jason           25      uuid:a2f38e2a-e74b-4bec-aae6-8e1fe6a5d9d8
Chris           42      uuid:6df5ce55-1398-4588-a852-a73b4cdebebe
Applebee        72      uuid:4957be51-c640-4c24-97ee-3036511992f9
Herbert         24      uuid:676916a9-0887-46ea-af45-65a9f812e5fe

(Примечание: это ручной экспорт из ODK. Фактически, JSON-файл, который декодируется в php-файле, происходит из их автоматического «публикуемого» экспорта и имеет еще несколько полей, все из которых являются нулевыми. Журнал ошибок ниже приведены данные JSON).

Я заканчиваю с базой данных MySQL, которая выглядит так:

    id          name        age         instanceID
1           [null]      0           [null]
2           r           0           r
3           S           0           S
4           [null]      0           [null]
5           [null]      0           [null]
6           [null]      0           [null]
7           r           0           r
8           S           0           S
9           [null]      0           [null]
10          [null]      0           [null]
11          [null]      0           [null]
12          r           0           r
13          S           0           S
14          [null]      0           [null]
15          [null]      0           [null]
16          [null]      0           [null]
17          r           0           r
18          S           0           S
19          [null]      0           [null]
20          [null]      0           [null]

Я предполагаю, что проблема в том, как файл JSON декодируется. Вот мой php (с подробным описанием сервера, замененным на * s):

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Decode JSON
$jsonData = file_get_contents('php://input');
$phpArray = json_decode($jsonData, true);

// Connect to databse
$dbhost = '*';
$dbuser = '*';
$dbpass = '*';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db('dbTest');

// Insert data
foreach($phpArray as $item) {
$mysql_query = ("INSERT INTO simple_survey (name, age, instanceID)
VALUES ('".$item['name']."', '".$item['age']."', '".$item['instanceID']."')");

$retval = mysql_query( $mysql_query, $conn ); //run the query
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
}

// Check to see if it worked
echo "Entered data successfully\n";

// Close connection
mysql_close($conn);

?>

А вот мой журнал ошибок (с заменой времени и имени файла на * s):

[*time*] {"token":"","content":"record","formId":"SimpleSurvey","formVersion":"","data":[{"*meta-instance-id*":"uuid:a2f38e2a-e74b-4bec-aae6-8e1fe6a5d9d8","*meta-model-version*":null,"*meta-ui-version*":null,"*meta-submission-date*":"2014-09-15T13:35:09.751Z","*meta-is-complete*":true,"*meta-date-marked-as-complete*":"2014-09-15T13:35:09.751Z","name":"Jason","age":25,"instanceID":"uuid:a2f38e2a-e74b-4bec-aae6-8e1fe6a5d9d8"}]}
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] {"token":"","content":"record","formId":"SimpleSurvey","formVersion":"","data":[{"*meta-instance-id*":"uuid:6df5ce55-1398-4588-a852-a73b4cdebebe","*meta-model-version*":null,"*meta-ui-version*":null,"*meta-submission-date*":"2014-09-15T13:35:13.803Z","*meta-is-complete*":true,"*meta-date-marked-as-complete*":"2014-09-15T13:35:13.803Z","name":"Chris","age":42,"instanceID":"uuid:6df5ce55-1398-4588-a852-a73b4cdebebe"}]}
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] {"token":"","content":"record","formId":"SimpleSurvey","formVersion":"","data":[{"*meta-instance-id*":"uuid:4957be51-c640-4c24-97ee-3036511992f9","*meta-model-version*":null,"*meta-ui-version*":null,"*meta-submission-date*":"2014-09-17T07:34:42.785Z","*meta-is-complete*":true,"*meta-date-marked-as-complete*":"2014-09-17T07:34:42.785Z","name":"Applebee","age":72,"instanceID":"uuid:4957be51-c640-4c24-97ee-3036511992f9"}]}
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] {"token":"","content":"record","formId":"SimpleSurvey","formVersion":"","data":[{"*meta-instance-id*":"uuid:676916a9-0887-46ea-af45-65a9f812e5fe","*meta-model-version*":null,"*meta-ui-version*":null,"*meta-submission-date*":"2014-09-17T07:35:02.672Z","*meta-is-complete*":true,"*meta-date-marked-as-complete*":"2014-09-17T07:35:02.672Z","name":"Herbert","age":24,"instanceID":"uuid:676916a9-0887-46ea-af45-65a9f812e5fe"}]}
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26
[*time*] PHP Notice:  Undefined variable: name in *file* on line 26
[*time*] PHP Notice:  Undefined variable: age in *file* on line 26
[*time*] PHP Notice:  Undefined variable: instanceID in *file* on line 26

И сообщение об ошибке, которое я получаю из самого файла php:
Указан неверный аргумент для foreach () в файл на линии 24.

Что мне нужно изменить в моем php, чтобы правильно импортировать данные в mySQL?

1

Решение

Читая свой JSON, кажется, что вы пытаетесь получить доступ в неправильном направлении

Изменить это

foreach($phpArray as $item) {

в правильной форме

foreach($phpArray['data'] as $item) {

и ofc не забудьте проверить $phpArray

2

Другие решения

Похоже на $phpArray не содержит то, что вы ожидаете, чтобы содержать.

Я бы сделал «отладку для бедного человека» и включил бы var_Dump($phpArray); прямо под json_decode чтобы увидеть, что в этом!

1

По вопросам рекламы [email protected]