Функция json_encode читает ноль из залпа, но корректно из Android Studio - PullRequest
0 голосов
/ 01 июля 2018

У меня есть скрипт php, в рамках которого я проверяю количество неоплаченных билетов, принадлежащих пользователю. Когда я вызываю скрипт в веб-браузере и передаю ему идентификатор пользователя, я получаю ожидаемый ответ, например -> ["unpaid_tickets","5","success"].
Однако, когда я вызываю тот же скрипт из приложения Android через volley библиотеки StringRequest или JsonArrayRequest Я продолжаю получать ноль для значения количества билетов, несмотря на использование одного и того же идентификатора пользователя. ответ -> ["unpaid_tickets","0","success"].
Как я могу исправить эту проблему? Я попытался добавить параметр в функцию json_encode(), например JSON_NUMERIC_CHECK, но безрезультатно. Любая помощь будет оценена.

PHP скрипт:

    $userid = $_GET['userid'];

$conn = mysqli_connect("localhost",$username,$password,$database) or die('Cannot connect to database');

$sql = "SELECT COUNT(*) AS unpaid_tickets FROM tbl_tickets WHERE userid ='$userid' AND pay_status ='reserved'";

$result = mysqli_query($conn,$sql) or die('Cannot execute query: '.mysqli_error($conn));


if($result){
    $row=mysqli_fetch_row($result);
    $tickets = $row[0];

    echo json_encode(array('unpaid_tickets',$tickets,'success'));
   // echo $tickets;

}else{
    echo json_encode(array('unpaid_tickets','0-0'));
}


Код Android:

            JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, AppController.getInstance().getURL(AppConst.TAG_URL_CHECK_UNPAID_TICKETS).equals("") ? AppConst.URL_CHECK_UNPAID_TICKETS : AppController.getInstance().getURL(AppConst.TAG_URL_CHECK_UNPAID_TICKETS), null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                Log.i(TAG,"user id -> "+AppController.getInstance().getPrefManager().getUserId());
                Log.w(TAG,"ticket check response -> "+response.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG,"processUnpaidTicket() volley -> "+error.toString());
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params = new HashMap<>();
                params.put(AppConst.TAG_USER_ID, AppController.getInstance().getPrefManager().getUserId());//add user id to request
                return params;
            }
        };
...