get_result()-> fetch_assoc()始终返回1行 [英] get_result()->fetch_assoc() always returning 1 row

查看:87
本文介绍了get_result()-> fetch_assoc()始终返回1行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个php代码:

public function getcabang(){

    $cabang = $this->conn->prepare("SELECT nama_cabang,alamat FROM cabang");

    if ($cabang->execute()){
        $cbg = $cabang->get_result()->fetch_assoc();
        $cabang->close();
        return $cbg;
    } else {
        return NULL;
    }
}

但它总是返回1行:

{"error":false,"cabang":{"nama_cabang":"Senayan","alamat":"Pintu 1 Senayan"}}

即使表中有超过1行

推荐答案

您需要进行迭代以获取每一行,这是

You need to iterate to get every row, here is an example from php.net :

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

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();
}

在您的情况下,应该是:

In your case, that would be :

public function getcabang(){

    $cabang = $this->conn->prepare("SELECT nama_cabang,alamat FROM cabang");

    if ($cabang->execute()){
        $cbg = array();
        $result = $cabang->get_result();
        while($row = $result->fetch_assoc()) {
            $cbg[] = $row;
        }
        $cabang->close();
        return $cbg;
    } else {
        return NULL;
    } 
}

此外,更好的解决方案是使用 mysqli_fetch_all (仅适用于mysqlnd)

Also, a better solution could be to use mysqli_fetch_all (Available only with mysqlnd)

这篇关于get_result()-> fetch_assoc()始终返回1行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆