【问题标题】:PHP MySQLi Is Not Looping to Get all Rows Using Prepared StatementPHP MySQLi 没有使用准备好的语句循环获取所有行
【发布时间】:2015-11-22 02:12:27
【问题描述】:

您能否告诉我为什么我无法通过此代码循环遍历所有行并以数组形式返回它们(每一行都是)?

$id= $_POST['uid'];
$rows = [];
$sql = "SELECT customerName, city, date FROM `customers` WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $id);
$stmt->execute();
$stmt->bind_result($customerName, $city, $date);
 while($stmt->fetch()){
    $rows =  array($customerName, $city, $date);
 }
 echo json_encode($rows);

如您所见,我使用的是while($stmt->fetch()){},但我只得到echo json_encode($rows); 中的最后一行

【问题讨论】:

    标签: php arrays mysqli prepared-statement


    【解决方案1】:

    您需要使用括号语法 ([]) 将元素添加到数组中。没有它,您将覆盖 $rows 中的值:

    while($stmt->fetch()){
        $rows[] =  array($customerName, $city, $date);
    }
    

    【讨论】:

    • 感谢 John Conde,但我已经将 $row 声明为一个数组,这还不够吗?您能否让我知道是否有更好的方法来做到这一点我的意思是使用 MySQLi 或 Prepared Statement 内置函数之一获取数据?
    • 不够。 PHP 允许您更改变量的数据类型。因此,除非您将变量视为数组,否则它将不再是一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多