无法显示多行,仅返回一行

时间:2020-04-22 05:53:23

标签: php mysql sql database

下面编写的代码仅返回一条记录,尽管我的查询返回了多条记录。那么如何显示多行呢?

    $stmt->bind_result($u_id,$cust_name,$u_name,$cnic,$address,$password);

                    $stmt->fetch();

                    $user = array(
                    'cust_name'=>$cust_name, 
                    'u_name'=>$u_name, 
                    'cnic'=>$cnic,
                    'address'=>$address,
                    'password'=>$password,
                    'u_id'=>$u_id
                    );

                    $response['user'] = $user; 

                    $stmt->close();

2 个答案:

答案 0 :(得分:1)

也许您需要尝试这样。每次迭代(假设在循环中)都会覆盖该数组

$user=array();          
$sql='select `u_id`,`cust_name`,`u_name`,`cnic`,`address`,`password`
        from `TABLE`';
$stmt=$db->prepare( $sql );
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($u_id,$cust_name,$u_name,$cnic,$address,$password);

while( $stmt->fetch() ){
    $user[] = array(
        'cust_name' =>  $cust_name, 
        'u_name'    =>  $u_name, 
        'cnic'      =>  $cnic,
        'address'   =>  $address,
        'password'  =>  $password,
        'u_id'      =>  $u_id
    );
}
$stmt->close();

答案 1 :(得分:0)

fetch每次被调用时获取一行,直到完成一行。所以你应该这样做:

$stmt->bind_result($u_id,$cust_name,$u_name,$cnic,$address,$password);

                while($stmt->fetch()) {

                $user = array(
                'cust_name'=>$cust_name, 
                'u_name'=>$u_name, 
                'cnic'=>$cnic,
                'address'=>$address,
                'password'=>$password,
                'u_id'=>$u_id
                );

                $response['user'][] = $user; // append to array, not overwrite it
             }
                $stmt->close();