1

我正在编写一个 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 手动导出的。事实上,在 php 文件中被解码的 JSON 文件来自他们的自动“发布”导出,并且还有一些字段,所有这些字段都是空的。错误日志下面包括该 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 文件本身得到的错误消息是:在第 24 行的文件中为 foreach () 提供的参数无效。

我需要在我的 php 中进行哪些更改才能将数据正确导入到 mySQL 中?

4

2 回答 2

2

阅读您的 json 似乎您正试图以错误的方式访问

改变这个

foreach($phpArray as $item) {

到正确的形式

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

并且ofc不要忘记验证$phpArray

于 2014-09-17T10:42:08.217 回答
1

似乎$phpArray不包含您期望它包含的内容。

我会做一些“穷人调试”,并var_Dump($phpArray);在下面添加一个json_decode以查看其中的内容!

于 2014-09-17T10:41:21.460 回答