我正在编写一个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文件来自他们的自动"发布"导出,还有一些字段,所有这些都是null。下面的错误日志包括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?
答案 0 :(得分:2)
读你的json似乎你试图以错误的方式访问
更改此
foreach($phpArray as $item) {
以正确的形式
foreach($phpArray['data'] as $item) {
和ofc别忘了验证$phpArray
答案 1 :(得分:1)
似乎$phpArray
不包含您希望它包含的内容。
我会做一些“穷人调试”并在var_Dump($phpArray);
下方加json_decode
来查看其中的内容!