【发布时间】:2014-04-26 16:17:57
【问题描述】:
我正在尝试使用 Web 服务以 JSON 格式将值返回给 Android 应用程序。出于某种原因,我的代码只返回“无效登录,请重试”。我很肯定正在输入用户名,并且我很肯定任务正在正确返回。使用我作为注释行包含的测试代码,我验证该服务将向应用程序返回一组数据。看来问题出在我的 foreach 循环上,但我不知道如何。这是很简单的东西。显然它没有迭代,或者我的计数会增加并且我不会收到 Invalid Login 错误。我唯一能想到的是我需要使用一个嵌套 foreach 循环,但我也没有取得太大的成功。
提前感谢各位的帮助!
这是 foreach 循环...
//for reach task returned, add to array for later output
foreach ($row2['Description'] as $t)
{
$taskDisplay = array('task' => $t);
$taskCount++;
}
还有伯爵……
if ($taskCount > 0)
{
echo json_encode($taskDisplay);
}
else
{
echo "Invalid login, please try again";
}
这是完整的代码
$taskDisplay = array();
$taskCount = 0;
//do this portion if app gives key value "PART_ONE"
if ($result['part'] == "PART_ONE")
{
//if username was entered, check user credentials
if(array_key_exists('user', $result)) {
$usercheck = $con->prepare("Select * from Employee
Where usr = ?
and pass = ?");
$usercheck -> execute(array($result['user'], $result['password']));
$row = $usercheck -> fetch();
//if username was verified, select tasks from database
if($row['usr'])
{
$task = $con->prepare("Select * from Tasks
where Assigned_Employee = ?");
$task -> execute(array($result['user']));
$row2 = $task -> fetch();
$statusCode = "Success";
//$taskDisplay = $row2['Description'];
//for reach task returned, add to array for later output
foreach ($row2['Description'] as $t)
{
$taskDisplay = array('task' => $t);
$taskCount++;
}
}
else
{
$statusCode = "Fail";
//bail if invalid username entered
exit;
}
//$arr = array('task' => $taskDisplay, 'status_code' => $statusCode);
//echo json_encode($arr);
if ($taskCount > 0)
{
echo json_encode($taskDisplay);
}
else
{
echo "Invalid login, please try again";
}
}
}
【问题讨论】:
-
我认为可能是您在 foreach 中的问题,并且 $row2['Description'] 没有值,这就是计数不增加的原因。
-
$row2['Description']可能不是数组。 -
感谢您的建议,但我已经仔细检查了 SQL 是否返回了正确的值。在注释掉的代码中,我可以将单个值返回给我的 android 应用程序。
标签: php android json web-services foreach