У меня есть приложение для Android, которое запрашивает данные из моей базы данных mysql. Это отлично работает, но когда я пытаюсь отправить параметр для того, сколько элементов нужно получить, я ничего не получаю.
Это мой код Java:
result = ""; client = new DefaultHttpClient(); post = new HttpPost("http://www.XXX.XXXX.XX/XX.php"); nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("itemsToGet", itemsToGet)); try { post.setEntity((new UrlEncodedFormEntity(nameValuePairs))); response = client.execute(post); entity = response.getEntity(); inputStream = entity.getContent(); } catch (UnsupportedEncodingException e) { Log.e(TAG, e.toString()); } catch (ClientProtocolException e) { Log.e(TAG, e.toString()); } catch (IOException e) { Log.e(TAG, e.toString()); } try { bufferedReader = new BufferedReader(new InputStreamReader(inputStream ,"iso-8859-1"), 8); stringBuilder = new StringBuilder(); String line = null; while((line = bufferedReader.readLine()) != null) { stringBuilder.append(line + "\n"); } inputStream.close(); result = stringBuilder.toString(); } catch (UnsupportedEncodingException e) { Log.e(TAG, e.toString()); } catch (IOException e) { Log.e(TAG, e.toString()); } try { JSONArray jsonArray = new JSONArray(result); for(int i = 0; i < jsonArray.length(); i++) { JSONObject object = jsonArray.getJSONObject(i); Log.i(TAG, object.getString("namn") + " " + i); } } catch (JSONException e) { Log.e(TAG, e.toString()); }
И это мой PHP-код на стороне сервера:
<?php mysql_connect("XXX.XXX.com", "XXX", "XXX") or die(mysql_error()); mysql_select_db("XXXXXXX") or die(mysql_error()); $data = mysql_query("SELECT * FROM artikel") or die(mysql_error()); $itemsToGet = intval($_POST['itemsToGet']); $counter = 0; while($info = mysql_fetch_array( $data ) && $counter < $itemsToGet) { $databaseInfo[] = $info; $counter++; } print(json_encode($databaseInfo));
?>
Я решил это. Условие в while-loop было неверным.
while($info = mysql_fetch_array( $data ) && $counter < $itemsToGet)
Должен быть
while(($info = mysql_fetch_array( $data )) && ($counter < $itemsToGet))