2017-04-24 5 views
0

Android Studio의 변수 안에있는 값을 PHP 코드에 전달하는 데 문제가 있습니다. 이 경우 Message.java의 변수 "group_id"에있는 값을 DbOperation.php에 전달하려고합니다. 즉, DbOperation.php의 "getMessages"함수는 "group_id"변수의 값을 가져 와서 MySQL 데이터베이스 내부의 특정 테이블을 선택할 수 있습니다. Android Studio를 처음 사용하며이 문제를 해결할 수 있도록 도와주세요. TQ 대단히. 예를 들어android studio에서 변수 값을 PHP로 보냅니다.

: 변수 "GROUP_ID"의 값 DbOperation.php 안쪽 "은 getMessages"기능 "을 수행 a.id, a.message, a.sentat, a.users_id, B를 선택한다"ABC123 "인 .name FROM ABC123_messages a, users b WHERE a.users_id = b.id ORDER BY a.id ASC; "

이하이 코드의 index.php

$app->post('/messages', function() use ($app){ 
verifyRequiredParams(array('group_id')); 
$group_id = $app->request()->post('group_id'); 
$db = new DbOperation(); 
$messages = $db->getMessages($group_id); 
$response = array(); 
$response['error']=false; 
$response['messages'] = array(); 
while($row = mysqli_fetch_array($messages)){ 
    $temp = array(); 
    $temp['id']=$row['id']; 
    $temp['message']=$row['message']; 
    $temp['userid']=$row['users_id']; 
    $temp['sentat']=$row['sentat']; 
    $temp['name']=$row['name']; 
    array_push($response['messages'],$temp); 
} 
echoResponse(200,$response);}); 


function verifyRequiredParams($required_fields){ 
$error = false; 
$error_fields = ""; 
$request_params = $_REQUEST; 
// Handling PUT request params 
if ($_SERVER['REQUEST_METHOD'] == 'PUT') { 
    $app = \Slim\Slim::getInstance(); 
    parse_str($app->request()->getBody(), $request_params); 
} 
foreach ($required_fields as $field) { 
    if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) { 
     $error = true; 
     $error_fields .= $field . ', '; 
    } 
} 

if ($error) { 
    // Required field(s) are missing or empty 
    // echo error json and stop the app 
    $response = array(); 
    $app = \Slim\Slim::getInstance(); 
    $response["error"] = true; 
    $response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty'; 
    echoResponse(400, $response); 
    $app->stop(); 
}} 

이 DbOperation 내부의 기능 중 하나에이 PHP 코드의 일부인 Message.java

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(Config.SHARED_PREF_GROUP, Context.MODE_PRIVATE); 
group_id = sharedPreferences.getString(Config.GROUP_SHARED_PREF, "Not Available"); 


private void fetchMessages() { 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.URL_FETCH_MESSAGES, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        //dialog.dismiss(); 

        try { 
         JSONObject res = new JSONObject(response); 
         JSONArray thread = res.getJSONArray("messages"); 
         for (int i = 0; i < thread.length(); i++) { 
          JSONObject obj = thread.getJSONObject(i); 
          int userId = obj.getInt("userid"); 
          String message = obj.getString("message"); 
          String name = obj.getString("name"); 
          String sentAt = obj.getString("sentat"); 
          Message messagObject = new Message(userId, message, sentAt, name); 
          messages.add(messagObject); 
         } 

         adapter = new ThreadAdapter(getActivity(), messages, AppController.getInstance().getUserId()); 
         recyclerView.setAdapter(adapter); 
         scrollToBottom(); 

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

       } 
      }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> params = new HashMap<>(); 
      params.put("group_id", group_id); 
      return params; 
     } 
    }; 

    AppController.getInstance().addToRequestQueue(stringRequest); 
} 

의 자바 클래스이다. PHP

public function getMessages($group_id){ 
    $stmt = $this->conn->prepare("SELECT a.id, a.message, a.sentat, a.users_id, b.name FROM ?_messages a, users b WHERE a.users_id = b.id ORDER BY a.id ASC;"); 
    $stmt->bind_param("s",$group_id); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 
    return $result;} 

답변

0

안드로이드 코드가 정상적으로 보입니다. 하지만 난 당신이 PHP에서 데이터를 보내지 잡았 생각하지 않습니다. $ _POST [ "group_id"]를 사용하여 확인하십시오.

+0

이미 시도해 보았습니다. 아직도 일할 수 없어 ... – ping94