下面编写的代码仅返回一条记录,尽管我的查询返回了多条记录。那么如何显示多行呢?
$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();
答案 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();