Функция json_encode считывает ноль из залпа, но исправляет из Android Studio

У меня есть скрипт 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;
            }
        };

К сожалению, это не лучший вопрос для этого сайта. См. как спросить, прочтите тур SO.

YvesLeBorg 01.07.2018 16:42

Вам нужно будет показать свой PHP-код, работающий с данными POST (или get или php: // input). Скорее всего, ваше приложение для Android отправляет необработанные данные, но ваш php-скрипт использует только $ _GET или $ _POST для чтения 'id'.

IncredibleHat 01.07.2018 16:46

@IncredibleHat добавил скрипт php

Manny265 01.07.2018 16:55

использовал как GET, так и POST, получая одинаковый результат @IncredibleHat

Manny265 01.07.2018 16:55

Ага. Это должно быть способ, которым приложение Android вызывает запрос. Если и get, и post не работают, вы можете попробовать отладку, указав это вверху: echo file_get_contents('php://input'); Если он выводит что-то похожее на ваш идентификатор пользователя, то это то место, куда оно передается.

IncredibleHat 01.07.2018 16:57

Возможно, вам также придется добавить короткий блок кода Android, чтобы узнать, как вы используете StringRequest, JsonArrayRequest или даже JsonObjectRequest. Насколько я понимаю, должен передает значение URL-адреса в качестве параметра GET.

IncredibleHat 01.07.2018 17:04

Я добавил код Android @IncredibleHat

Manny265 02.07.2018 09:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
35
0

Другие вопросы по теме