Исключение JSON: type.lang.Строка не может быть преобразована в JSONObject

#php #android #sql

#php #Android #sql

Вопрос:

Это мой java-код, и у меня возникла проблема при попытке поймать, когда я беру where user_id = «. $_SESSION[‘user_id’] из запроса, который он выполняет. У меня также есть класс, в котором я сохраняю сеанс user_id

 try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("Costs");

            for (int i = 0; i < jsonMainNode.length(); i  ) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);

                String number = jsonChildNode.optString("Costs");
                String outPut = number   "€";
                employeeList.add(createEmployee("custos", outPut));
            }
        } catch (JSONException e) {
            Toast.makeText(getActivity(), "Error"   e.toString(),
                    Toast.LENGTH_SHORT).show();
        }

        SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), employeeList,
                android.R.layout.simple_list_item_1,
                new String[] { "Costs" }, new int[] { android.R.id.text1 });
        listView.setAdapter(simpleAdapter);


    }
  

Это мой php-файл

 <?php
$host="localhost"; 
$username="root"; 
$password=""; 
$db_name="Parking";
session_start();
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
$sql = "select * from Costs where user_id = ". $_SESSION['user_id']; 
$result = mysql_query($sql);
$json = array();

if(mysql_num_rows($result)){
while($row=mysql_fetch_assoc($result)){
$json['Costs'][]=$row;
}
}
mysql_close($con);
echo json_encode($json); 
?>
  

Комментарии:

1. Не используйте устаревшие mysql_* функции. Они устарели с PHP 5.5 и полностью удалены в PHP 7. Они также небезопасны. Вместо этого используйте MySQLi или PDO.

2. Итак, что происходит, когда у вас есть WHERE в вашем запросе? Сообщение об ошибке? Пустой ответ? Вы проверили, что на самом $_SESSION['user_id'] деле содержит что-нибудь?

3. Зависит… это заставит вас переписать ваш DB-код, что на самом деле может изменить ситуацию. Например, использование подготовленных операторов вместо объединения вашего запроса.

4. Он перехватит исключение и сообщит, что исключение JSON:type.lang . Строка не может быть преобразована в JSONObject. Я сохраняю идентификатор пользователя здесь, если (isset($check)){session_start(); $_SESSION[‘user_id’] = $check[‘user_id’]; echo «user_id»;

5. Где вы это делаете? Я не вижу этого в коде, с которым у вас возникли проблемы. Зарегистрируйте свою $sql переменную после ее создания и проверьте, правильно ли она выглядит или нет.