【问题标题】:How to get all rows from phpmyadmin database in Android?如何从 Android 中的 phpmyadmin 数据库中获取所有行?
【发布时间】:2017-09-26 21:21:57
【问题描述】:

如何从 phpmyadmin 数据库中获取所有行并在 Android 中显示它们?

当我得到一排时,一切都很好。当我尝试读取所有行时,我只得到最后一行。

我的 php:

<?php
$con = mysqli_connect("localhost", "id831385_rootroot", "rootroot", "id831385_bukrisk");

$accept= $_POST["accept"];

$statement = mysqli_prepare($con, "SELECT * FROM payments WHERE accept= ?");
mysqli_stmt_bind_param($statement, "i", $accept);
mysqli_stmt_execute($statement);

mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement,  $id_pay, $id_user, $value, $accept);

$response = array();
$response["success"] = false;  

while(mysqli_stmt_fetch($statement)){
    $response["success"] = true;  
    $response["id_pay"] = $id_pay;
    $response["id_user"] = $id_user;
    $response["value"] = $value;
    $response["accept"] = $accept;
}

echo json_encode($response);
?>

我的 java 请求:

public class GetPaymentsRequest extends StringRequest {
    private static final String LOGIN_REQUEST_URL = "https://pacinho.000webhostapp.com/PaymentsList.php";
    private Map<String, String> params;

    public GetPaymentsRequest(String accept, Response.Listener<String> listener) {
        super(Request.Method.POST, LOGIN_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("accept", accept);
    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }
}

我在活动中的 java 代码:

     Response.Listener<String> responseListener = new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonResponse = new JSONObject(response);
                boolean success = jsonResponse.getBoolean("success");

                    if (success) {
                        int id_pay = jsonResponse.getInt("id_pay");
                        int id_user = jsonResponse.getInt("id_user");
                        int value = jsonResponse.getInt("value");

                        //Toast.makeText(myView.getContext(),""+id_pay, Toast.LENGTH_SHORT).show();

                        String id_payS = String.valueOf(id_pay);
                        String id_userS = String.valueOf(id_user);
                        String valueS = String.valueOf(value);

                        showPay.setText(showPay.getText() + " " + id_payS);
                        //UserPayments UP = new UserPayments(id_payS,id_userS,valueS);
                        //paymentsList.add(UP);

                        //paymentsCustomAdapter.notifyDataSetChanged();
                    } else {
                    }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

GetPaymentsRequest paymentsRequest = new GetPaymentsRequest("0", responseListener);
RequestQueue queue = Volley.newRequestQueue(myView.getContext());
queue.add(paymentsRequest);

【问题讨论】:

  • PhpMyAdmin 不是数据库。它是一种管理工具。您使用的真实数据库(可能)是 MySQL。

标签: java android phpmyadmin


【解决方案1】:

对于您获取 PHP 代码的每一行,只是覆盖了$response 的值。相反,您应该创建一个数组并将所有行放入其中

 while(mysqli_stmt_fetch($statement)){
    $payment = array();
    $payment["success"] = true;
    $payment["id_pay"] = $id_pay;
    $payment["id_user"] = $id_user;
    $payment["value"] = $value;
    $payment["accept"] = $accept;
    $response[] = $payment;
}

你还需要修改android端的代码来处理数组。

【讨论】:

  • 对不起.. 我不知道那是做什么的。如何在 Android 中执行此操作。谢谢!
  • @AllPacinho 这个answer 可能会帮助你
猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2016-09-14
  • 2020-09-13
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多