phpwebservices:从mysql获取多条记录,并将其编码为json数组

zi8p0yeb  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(323)

我是使用mysql的php web服务的新手。我遵循这个教程。我创建了一个表-> loan_applications 使用phpmyadmin。当前我在表中有3条记录与id 1相关。我想检索所有3个记录,并想在json编码它。
我尝试了多种方式,并尝试谷歌搜索,但无法得到正确的json数组的响应。这是我的 get_applications_list.php ```

这是我的 `DB_Functions.php` ```
<?php

class DB_Functions {

private $conn;

// constructor
function __construct() {
    require_once 'DB_Connect.php';
    // connecting to database
    $db = new Db_Connect();
    $this->conn = $db->connect();
}

// destructor
function __destruct() {

}     
public function getApplicationsList($id){
    $stmt = $this->conn->prepare("SELECT * FROM loan_applications WHERE id = ?");
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $applications = $stmt->get_result()->fetch_assoc();
    $stmt->close();

    if($applications){
        return $applications;
    }else {
        return false;
    }
}
}
?>

以下是我得到的回应:

{"status":0,"id":1,"application_id":1,"requested_amount":5000,"interest_per_day":"0.50","gst":18,"tenure":28,"processing_fees":"5.00","amount_user_get":4705,"amount_user_pay":5700,"application_latitude":"9.999999999","application_longitude":"9.999999999","application_status":1,"created_at":"2018-10-10 21:45:17","updated_at":"0000-00-00 00:00:00","message":"Applications details fetched successfully"}

我只得到一个记录,但我需要所有3个记录与id 1。我试了很多次,但没能成功。

tv6aics1

tv6aics11#

所以这里有很多问题
1-虽然不确定但是 Currenlty I have 3 records in table related to id 1 似乎不正确的说法。如果 id 是主键,一条记录不能有3条记录 id 2 - $stmt->get_result()->fetch_assoc(); 将始终返回一行,若要获取多行或行集合,您需要按如下所示执行

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    $result->free();
}

3-从下面的代码中可以很清楚地看出,实际上您只返回了一行

if ($applications) {
        // got applications successfully
        $response["status"] = 0;
        $response["id"] = $applications["id"];
        $response["application_id"] = $applications["application_id"];
        $response["requested_amount"] = $applications["requested_amount"];
        $response["interest_per_day"] = $applications["interest_per_day"];  
        $response["gst"] = $applications["gst"];    
        $response["tenure"] = $applications["tenure"];  
        $response["processing_fees"] = $applications["processing_fees"];    
        $response["amount_user_get"] = $applications["amount_user_get"];
        $response["amount_user_pay"] = $applications["amount_user_pay"];
        $response["application_latitude"] = $applications["application_latitude"];
        $response["application_longitude"] = $applications["application_longitude"];
        $response["application_status"] = $applications["application_status"];      
        $response["created_at"] = $applications["created_at"];  
        $response["updated_at"] = $applications["updated_at"];          
        $response["message"] = "Applications details fetched successfully";

        echo json_encode($response);
    }

你应该这样做

$applications = getAllApplications(); //returns array of applications
$response['applications'] = $applications; // if they keys you want to send and database fields are same you don't need to set them separately
return json_encode($response);

相关问题