Php 转换为PDO后,ListView中不显示数据

Php 转换为PDO后,ListView中不显示数据,php,pdo,Php,Pdo,我已经创建了一个包含ListView的应用程序。我使用PHP连接android和数据库。现在,我使用MySQLi,它可以正常工作。但当我转换为PDO时,数据不会显示。我使用'Log.d'来跟踪数据得到了什么。结果如下: MySQLi(无错误)-{“数据”:[{“报告id”:19,“任务名称”:“ngantuk”,“badgeid”:“12345”,“报告日期”:“2019年12月4日”,等等 PDO(非日志显示数据) 下面是MySQLi和PDO的当前代码 MySQLi <?php

我已经创建了一个包含ListView的应用程序。我使用PHP连接android和数据库。现在,我使用MySQLi,它可以正常工作。但当我转换为PDO时,数据不会显示。我使用'Log.d'来跟踪数据得到了什么。结果如下:

  • MySQLi(无错误)-{“数据”:[{“报告id”:19,“任务名称”:“ngantuk”,“badgeid”:“12345”,“报告日期”:“2019年12月4日”,等等

  • PDO(非日志显示数据)

  • 下面是MySQLi和PDO的当前代码

    MySQLi

    <?php 
    
        require_once 'config.php';
    
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            die();
        }
    
        $badgeid = $_GET["badgeid"] ?? "";
    
        $stmt = $conn->prepare("SELECT report_id, task_name, badgeid, report_date, photo_before, photo_after, report_status FROM report WHERE badgeid = '$badgeid' AND report_status = 'Pending';");
        $stmt->execute();
        $stmt->bind_result($report_id, $task_name, $badgeid, $report_date, $photo_before, $photo_after, $report_status);
    
        $task = array(); 
    
        while($stmt->fetch()){
            $temp = array();
            $temp['report_id'] = $report_id; 
            $temp['task_name'] = $task_name; 
            $temp['badgeid'] = $badgeid;
    
            $booked = strtotime($report_date);
            $report_date = date("d M Y", $booked);
    
            $temp['report_date'] = $report_date;
            $temp['photo_before'] = $photo_before;
            $temp['photo_after'] = $photo_after;
            $temp['report_status'] = $report_status; 
            array_push($task, $temp);
        }
    
        $response = array();
        $response["data"] = $task;
        echo json_encode($response);
    
    ?>
    

    有人知道我的PDO代码有什么问题吗?

    mysqli代码和PDO代码不一样。我将代码从mysqli版本复制到PDO版本

    PDOStatement::fetch()
    一次获取一行。当您获取fetch的结果并将其放入while循环的条件中时,您正在创建一个无限循环,最终将耗尽内存

    require_once 'configPDO.php';
    
    $badgeid = $_GET["badgeid"] ?? "";
    $stmt = $conn->prepare("SELECT report_id, task_name, badgeid, report_date, photo_before, photo_after, report_status FROM report WHERE badgeid = :badgeid AND report_status = 'Pending'");   
    $stmt->bindParam(':badgeid',$badgeid,PDO::PARAM_STR);
    $stmt->execute();
    $task = [];
    
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $temp = [];
        $temp['report_id'] = $result['report_id']; 
        $temp['task_name'] = $result['task_name']; 
        $temp['badgeid'] = $result['badgeid'];
    
        $booked = strtotime($result['report_date']);
        $report_date = date("d M Y", $booked);
    
        $temp['report_date'] = $result['report_date'];
        $temp['photo_before'] = $result['photo_before'];
        $temp['photo_after'] = $result['photo_after'];
        $temp['report_status'] = $result['report_status']; 
        $task[] = $temp;
    }   
    
    
    $response = [];
    $response["data"] = $task;
    
    echo json_encode($response);
    
    require_once 'configPDO.php';
    
    $badgeid = $_GET["badgeid"] ?? "";
    $stmt = $conn->prepare("SELECT report_id, task_name, badgeid, report_date, photo_before, photo_after, report_status FROM report WHERE badgeid = :badgeid AND report_status = 'Pending'");   
    $stmt->bindParam(':badgeid',$badgeid,PDO::PARAM_STR);
    $stmt->execute();
    $task = [];
    
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $temp = [];
        $temp['report_id'] = $result['report_id']; 
        $temp['task_name'] = $result['task_name']; 
        $temp['badgeid'] = $result['badgeid'];
    
        $booked = strtotime($result['report_date']);
        $report_date = date("d M Y", $booked);
    
        $temp['report_date'] = $result['report_date'];
        $temp['photo_before'] = $result['photo_before'];
        $temp['photo_after'] = $result['photo_after'];
        $temp['report_status'] = $result['report_status']; 
        $task[] = $temp;
    }   
    
    
    $response = [];
    $response["data"] = $task;
    
    echo json_encode($response);