【问题标题】:Query "SELECT * FROM .... WHERE ..." in PHP with POST request使用 POST 请求在 PHP 中查询“SELECT * FROM .... WHERE ...”
【发布时间】:2018-06-16 13:13:30
【问题描述】:

我正在尝试从我的 android 应用程序发送用户的 id,然后使用 $_POST 方法请求在服务器上的 SQLite 数据库中获取他们的信息。按照一些教程,我发现 mysqli_query() 将为成功的 SELECT 查询返回一个对象。因此,我获取用户信息以在 android studio 中使用 Volley 库读取 JsonObject。但是,我收到一个错误:**java.lang.String 类型的值无法转换为 JSONObject **。我是 PHP 和 Android 的新手(刚从 1 个月前开始学习),请帮助我!提前致谢。

这是php中的代码:

<?php
 $connect = mysqli_connect("localhost","root","","bkguardian");
 mysqli_query($connect,"SET NAME 'uft8'");
 $id = $_POST['id'];

 $query = "SELECT * FROM user_lock_information WHERE id = '$id' LIMIT 1";
 $data = mysqli_query($connect,$query);

 $row = mysqli_fetch_assoc($data);
 echo json_encode($row);
?>

adroid studio中获取用户信息的功能如下:

private void getUserLockInformation(String url, final String id) {
    RequestQueue requestQueue = Volley.newRequestQueue(LogInActivity.this);
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Integer numColumn = response.length();
                    lockData = new Integer[numColumn -1];
                    String nameHandle;

                    for (int i = 0; i<=numColumn-1; i++){
                        nameHandle ="lock".concat(String.valueOf(i+1));
                        try {
                            lockData[i]= response.getInt(nameHandle);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // GET NOTIFY FOR SYSTEM ERROR, NEED TO ADD MORE ACTION.
                    Toast.makeText(LogInActivity.this, "Error system, Please report this to admin!",Toast.LENGTH_LONG).show();
                    Log.d("AAA","error \n" +error.toString());
                }
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> param = new HashMap<>();
            param.put("id",id);
            return param;
        }
    };
    requestQueue.add(jsonObjectRequest);
}

【问题讨论】:

  • 名字是名字的同义词吗?
  • 嗯,我不明白你的问题?我的代码中没有“名称”或“名称”
  • 嗯,那是你的代码,“名字”这个词肯定出现在里面。

标签: javascript php android mysql


【解决方案1】:
$query = "your query";
if ($data = $mysqli->query($query)) {
    $row = $data->fetch_array(MYSQLI_NUM);

    echo json_encode( $row );
    $data->free();
}
$mysqli->close();

【讨论】:

  • 关联数组无法编码为json格式
  • 我在 php 中的代码仍然很好,直到我使用 POST 方法通过将 $id = "fakeIdTransfer"; 更改为 $id = $_POST 来上传用户的 ID ['id'];.
猜你喜欢
  • 2013-02-08
  • 2019-06-26
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多