MySql에 연결하고 데이터를 JSON으로 인코딩하는 PHP 코드가 있습니다. 나중에 필터를 적용하여 특정 JSON 객체를 가져옵니다. 하나의 NameValuePair 객체를 사용하는 동안 괜찮 았지만 이제는 username과 password 같은 변수를 사용하고 싶습니다. 이제 로그캣에서이 경고를받습니다. 데이터를 파싱하는 중 오류가 발생했습니다. org.json.JSONException : org.json.JSONObject $ 1 유형의 값 null을 JSONArray로 변환 할 수 없습니다.안드로이드 NameValuePair 값을 보내십시오
제대로 작동 할 수있는 코드는 어떻게 변경해야합니까? 요청 전송
$q=mysql_query("SELECT username, firstname, lastname, email, phone1, skype, city, description FROM mdl_user WHERE username LIKE '$username' AND password LIKE '$password'");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
코드 :
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("usern",""+usr));
nameValuePairs.add(new BasicNameValuePair("passw",""+psw));
InputStream is = null;
String result = "";
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://ik.su.lt/~jbarzelis/Bdarbas/getUserInfo.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
편집
$username = mysql_real_escape_string($_REQUEST['usern']);
$password = mysql_real_escape_string($_REQUEST['passw']);
$q=mysql_query("SELECT username, firstname, lastname, email, phone1, skype, city, description
FROM mdl_user WHERE username LIKE '$username' AND password LIKE '$password'");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
전체 코드가 아닙니다. 위에 편집 됨. – LTnewbie
내 게시물이 의미가 없으므로 삭제하겠습니다. :) –
하지만 여전히 권한 부여에서 "LIKE"보다는 "="를 사용해야합니다. 그리고 사용자 이름과 암호를 하드 코딩하여 출력물을 인쇄하는지 확인하십시오. 그럴 경우 문제가 사라집니다. 데이터를받는 대신 PHP 스크립트로 데이터를 보내는 것보다 문제가 있습니다. –