我知道这种问题有一些解决方案,并为这个问题应用了一些解决方案,但我无法解决,我很困惑。请帮我。这是代码:
protected String doInBackground(Boolean... params) {
String result = null;
StringBuilder sb = new StringBuilder();
try {
// http post
HttpClient httpclient = new DefaultHttpClient();
HttpGet httppost = new HttpGet(
"http://192.168.2.245/getProducts.php?login=1&user_name=UserName&password=Password");
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() != 200) {
Log.d("MyApp", "Server encountered an error");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "utf-8"), 8); //old charset iso-8859-1
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
Log.d("test", result);
}
catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
return result;
}
PHP代码:
$login=$_GET["login"];
$user_name=$_GET["user_name"];
$password=$_GET["password"];
$output=array();
if ($login) {
$sql=mysql_query("SELECT user_id FROM users WHERE user_name='".$user_name."' AND user_pass='".$password."' ");
while($row=mysql_fetch_array($sql)) {
$user_id=$row["user_id"];
}
$sql=mysql_query("SELECT name,device_id,lat,lon FROM devices WHERE user_id='".$user_id."' LIMIT 100");
while($row=mysql_fetch_assoc($sql)) {
$output[]=$row; }
}
print(json_encode($output));
mysql_close();
logcat:org.json.JSONException:Value
我该怎么办? Php代码在网页上运行没有任何错误,但为什么在这部分出现错误? 在logcat中还有: (!)注意:未定义的变量:在线路 27上的C:\ wamp \ www \ getProducts.php中的user_id
的logcat!
<br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: user_id in C:\wamp\www\getProducts.php on line <i>27</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>... this kind of code appears in logcat then org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONArray at org.json.JSON.typeMismatch(JSON.java:107)
答案 0 :(得分:4)
您没有返回有效的JSON,似乎您要返回带有<br>
的HTML代码段
看看你的网站返回来源。
我该怎么办? Php代码在网页上运行没有任何错误,但为什么在这部分出现错误?在logcat中还有:(!)注意:未定义的变量:第27行的C:\ wamp \ www \ getProducts.php中的user_id
所以user_id
没有定义!只需查看您的GET / POST参数或向我们展示您的相关PHP代码。
请使用echo json_encode($output);
而不是print
。
如果第一个查询中没有返回的行,你在做什么? 试试这个。
$sql=mysql_query("SELECT user_id FROM users WHERE user_name='".$user_name."' AND user_pass='".$password."' ");
if(mysql_num_rows($sql) == 0){
echo "USERID CANNOT BE FOUND";
}
while($row=mysql_fetch_array($sql)) {
echo "USERID FOUND" .$row["user_id"] ;
$user_id=$row["user_id"];
}
似乎无法找到user_name
。所以只需在那之后尝试回显你的user_id就可以调试它。如果您没有获得UserID FOUND echo,则不存在user_name和密码。
编辑:正如您的logact所说,您传递的用户名没有条目,因此永远不会填写$ user_id。
http://192.168.2.245/getProducts.php?login=1&user_name=UserName&password=Password
您正在传递user_name = UserName和密码=密码。此条目是否确实存在于您的数据库中?
另外,为了获得更好的性能,请查看MySQL LETF JOIN和MySQL子查询。