我在PHP中遇到问题。我试图从Android传递用户名/密码,并通过PHP检查MySQL中的值。在使用json_decode
和json_encode
时,json_decode
有效,但json_encode
不起作用。但是当我删除json_decode
,json_encode
时,我希望它们都能在我的程序中运行。
这是我的代码:
$a = $_POST['userpwd_value']; //Accesing the value from Android.
$b = json_decode($a); //Decoding android value using JSON.
$username = $b->{'username'}; //Assigning username from android to a variable.
$password = $b->{'password'}; //Assigning password from android to a variable.
echo $username.$password;
$check = mysql_query("select username,password from user where id=1");
$row = mysql_fetch_assoc($check);
//if($row['username']==$username && $row['password']==$password)
$output[]=$row;
//else
//$output[]=array("value"=>"false");
print(json_encode($output));
问题出在哪里?
答案 0 :(得分:3)
json_encode
会失败。如果您的数据库使用另一个字符集,变量包含特殊字符,那么您应该在那里得到一个错误。 (提高error_reporting
级别或查看json_last_error
以查找)
您的特定代码的另一个问题是您首先输出其他内容:
echo $username.$password;
这将使JSON输出整体无效。如果您有前导垃圾,您的浏览器将无法正确解码返回的变量。另外,请不要忘记使用header("Content-Type: application/json");
$b=json_decode($_POST['userpwd_value']);
$username=$b->{'username'};
$password=$b->{'password'};
$check = mysql_query("select username,password from user where id=1");
$row = mysql_fetch_assoc($check);
$row = array_map("utf8_encode", $row);
if ($row['username']==$username && $row['password']==$password) {
$output[] = $row;
} else {
$output[] = array("value"=>"false");
}
header("Content-Type: application/json");
print(json_encode($output));
答案 1 :(得分:0)
我认为JSON编码数据中可能存在另一个级别($a
)。您的echo语句是否显示正确的用户名和密码?如果没有,请将var_dump($b);
放在您的后面
$b = json_decode($a);
声明。
答案 2 :(得分:0)
将以下两行替换为以下内容。
您原来的行:
$username=$b->{'username'};
$password=$b->{'password'};
新行:
$username=$b->username;
$password=$b->password;
更换后,检查它是否正常工作。