2016-04-29 3 views
-1

Я занимаюсь поисковой деятельностью, которая сканирует базу данных и показывает результаты в android. Вот мой php-кодЯ использую POST, но все равно продолжаю получать все строки

$keyword = $_POST["keyword"];; 
$query = "select * from user where u_name like '%$keyword%' OR u_lname like '%$keyword%' OR u_email like '%$keyword%';"; 

$result = mysqli_query($con,$query); 

$response = array(); 

while($row = mysqli_fetch_array($result)) 
{ 
    array_push($response, array("u_id" => $row[0], "u_name" => $row[1],"u_lname" =>$row[2],"u_email" =>$row[3], "u_pw" =>$row[4], "u_dp" => $row[5])); 
} 

echo json_encode(array("search_response"=>$response)); 

Я получаю всех пользователей, как я могу искать, как хочу?

вот мой андроид код Java

HashMap<String, String> params = new HashMap<String, String>(); 
    params.put("keyword", "ka"); 

    JsonObjectRequest req = new JsonObjectRequest("http://ksdb.comlu.com/search.php", new JSONObject(params), 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         JSONArray jsonArray= response.getJSONArray("search_response"); 
         for(int i = 0; i < jsonArray.length(); i ++){ 
          JSONObject user = jsonArray.getJSONObject(i); 
          String id = user.getString("u_id"); 
          String name = user.getString("u_name"); 
          String surname = user.getString("u_lname"); 
          String email = user.getString("u_email"); 
          String password = user.getString("u_pw"); 
          String department = user.getString("u_dp"); 
          User newUser = new User(id, name, surname, email, password, department); 
          userArrayList.add(newUser); 

         } 
         setUsersListView(userArrayList); 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.e("Error: ", error.getMessage()); 
     } 
    }); 

    RequestQueue queue = Volley.newRequestQueue(MainUserPage.this); 
    queue.add(req); 

} 




private void updateSchedule() { 
    User user = userLocalStore.getLoggedInUser(); 
    String key = user.getId(); 
    ArrayList<String> checkedSchedule = checkSchedule(); 
    Response.Listener<String> updateListener = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonObject = new JSONObject(response); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }; 

    UpdateScheduleRequest updateScheduleRequest = new UpdateScheduleRequest(key,checkedSchedule,updateListener); 
    RequestQueue queue = Volley.newRequestQueue(MainUserPage.this); 
    queue.add(updateScheduleRequest); 

Я действительно много о PHP не знаю, что я не мог найти, как решить мою проблему.

+0

введите некоторые данные, которые вы ищете, плюс то, что вы ищете. Нет проблем с запросом. –

+6

Привет, SQL-инъекция! http://php.net/manual/en/mysqli.prepare.php – Sammitch

+0

В чем проблема? Но используйте mysqli_fetch_assoc() вместо mysqli_fetch_array() и проверьте ввод, если он действителен. Итак, вы должны использовать фреймворк: p – Loenix

ответ

0

Я не очень умный с Java кодом, так что я угадал:

Я не вижу, где можно указать метод запроса, так что я думаю, что вы посылаете значение keyword с помощью метода GET вместо ПОСЛЕ. Тогда $_POST['keyword'] всегда является пустой строкой, и SQL-запрос соответствует каждой строке таблицы.

Если это причина, вы можете установить метод запроса POST (Java-код) или использовать $ _GET (php-код).

+0

Я проверил, я использую метод POST: / – KSC

Смежные вопросы