2016-04-29 94 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)); 

我讓所有我怎麼可以搜索我想要的用戶?

這裏是我的Android的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代碼,所以我猜:

我沒有看到你指定的請求的方法,所以我覺得你是通過發送GET方法keyword值,而不是POST。 然後$_POST['keyword']始終是一個空字符串,SQL查詢匹配每個錶行。

如果這是原因,您可以設置請求方法爲POST(java代碼)或使用$ _GET(php代碼)。

+0

我檢查了,我使用POST方法:/ – KSC

相關問題