【发布时间】:2016-01-30 18:13:34
【问题描述】:
我正在开发一个 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 应用程序。
我的意思是,假设我向服务器发送了 5 个问题。
MySQL 结果(一切都是真的):
- 问题:问题ID:1;问题:“问题 1”
- 问题:问题ID:2;问题:“问题 2”
- 问题:问题ID:3;问题:“问题 3”
- 问题:问题ID:4;问题:“问题 4”
- 问题:问题ID:5;问题:“问题 5”
JSON 结果(我只得到第一个 POST 的值):
- 问题:问题ID:1;问题:“问题 1”
- 问题:问题ID:1;问题:“问题 1”
- 问题:问题ID:1;问题:“问题 1”
- 问题:问题ID:1;问题:“问题 1”
- 问题:问题ID:1;问题:“问题 1”
所以,我不明白为什么我可以正确地将 POST 值传递给 mySQL,但我不能将它们作为 JSON 回显。
我没有发送 android 代码,因为我确信 android 应用程序正确发送值,因为我可以在 mySQL 中看到预期值。
我尝试了什么:
-在我使用POST变量之前,我将它们传递给一个局部变量,我尝试使用这个局部变量插入mySQL和echo JSON(结果相同)
【问题讨论】:
-
也许是它的缓存?
-
您在哪里实际看到 JSON 结果?在您的应用程序中?您应该显示该代码。
-
是的,你需要更清楚。通过逐个发送问题,您的意思是您为每个问题发送一个对这个 PHP 脚本的请求?您的“MySQL 结果”是什么意思?它们是 PHP 生成的查询字符串,还是每个查询实际上都返回了成功的查询结果..
-
PHP 代码看起来不错,发布您的接收从 PHP 脚本返回的 JSON 的 android 代码。
标签: php android mysql json post