我无法使用JSON

时间:2016-01-30 18:13:34

标签: php android mysql json post

我正在开发一个Android应用程序。我正在使用JSON与服务器通信。我有一个奇怪的问题。

我有一个问题清单。将android问题数据库与服务器同步;我用JSON post方法逐个发送所有问题。在我发送第一个问题后,我等待JSON的“success = 1”标签,然后发送以下问题。这是我的PHP文件:

<?php

require("config.inc.php");

if (!empty($_POST)) {

    $query = "
        INSERT INTO questions (question, username, askedDate, questionIDFromAndroid )
        VALUES ( :question, :username, :askedDate, :questionIDFromAndroid)";

    date_default_timezone_set('Europe/Istanbul');
    $date = date('Y-m-d H:i:s', time());



    $query_params = array(
        ':question' => $_POST['question'],
        ':username' => $_POST['username'],
        ':questionIDFromAndroid' => $_POST['questionID'],
        ':askedDate' => $date 
    );


    try {

        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {

        $response["success"] = 0;
        $response["message"] = $ex->getMessage() ;
        die(json_encode($response));
    }

    $response["success"] = 1;
    $response["questionID"] = $_POST['questionID'];
    $response["question"] = $_POST['question'];
    $response["message"] = "Question Successfully Added!";
    echo json_encode($response);

    unset($_POST);
}
?>

查看$ query_params变量。在那里,我读取$ _POST变量并将它们传递给MySQL。在这里,我可以正确设置所有值。问题是;当我尝试将$ _POST变量传递给JSON时,服务器只向android app发送第一个问题的值。

我的意思是,假设我向服务器发送了5个问题。

MySQL结果(一切都是真的):

  1. 问题:questionID:1;问题:“问题1”
  2. 问题:questionID:2;问题:“问题2”
  3. 问题:questionID:3;问题:“问题3”
  4. 问题:questionID:4;问题:“问题4”
  5. 问题:questionID:5;问题:“问题5”
  6. JSON结果(我只得到第一个POST的值):

    1. 问题:questionID:1;问题:“问题1”
    2. 问题:questionID:1;问题:“问题1”
    3. 问题:questionID:1;问题:“问题1”
    4. 问题:questionID:1;问题:“问题1”
    5. 问题:questionID:1;问题:“问题1”
    6. 所以,我无法理解为什么我可以正确地将POST值传递给mySQL,但我不能将它们作为JSON回显。

      我没有发送android代码,因为我确信android应用程序正确发送值,因为我可以在mySQL中看到预期的值。

      我尝试了什么:

      - 在我使用POST变量之前,我将它们传递给局部变量,我试图使用这个局部变量来插入mySQL和echo JSON(结果是一样的)

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。正如我所说,我逐个发送问题,我使用迭代为每个问题,我发送它们。我的&#34; JSONParser&#34;对象不在迭代中。它是在迭代类的开头,但不在迭代方法中。因此,对于每次迭代,我的应用程序都会读取JSONParser对象的第一个实例。在我的迭代方法中移动了这段代码gulp.task('package', function() { var packagePath = paths.packagePath; var stream = gulp .src( paths.api ) .pipe( gulp.dest( packagePath + '/api' ) ); del( packagePath + '/api/v1/_old' ); return stream; }); 之后,我的问题就解决了。