如何显示数组中的全部数据?从PHP函数获取数组后显示遇到问题
解决PHP函数返回并显示全部数组数据的问题
嘿,我来帮你搞定这个显示全部数组数据的问题~首先看你的函数代码,最后应该是写了一半的fetch_assoc()吧?这个方法只会返回结果集中的单行数据,这就是你没法看到全部数据的原因。下面给你两种修正方案,以及如何显示拿到的所有数据:
方案一:用fetch_all()一次性获取所有行
这是最简洁的方法,直接把查询到的所有结果转换成二维关联数组返回:
public function izpis_narocil($user) { $sql = "SELECT * FROM nabava WHERE id_uporabnika=?"; if( !$this->stmt = $this->mysqli->prepare($sql) ) throw new Exception("MySQL Prepare statement failed: ".$this->mysqli->error); $this->stmt->bind_param("i", $user); $this->stmt->execute(); $result = $this->stmt->get_result(); if( $result->num_rows == 0) return []; // 返回空数组比空字符串更合理,方便后续判断数据是否存在 // 一次性获取所有关联数组格式的结果 return $result->fetch_all(MYSQLI_ASSOC); }
方案二:循环遍历存入数组(兼容旧版本PHP)
如果你的PHP版本比较老(不支持fetch_all()),可以用循环逐行读取结果并存入数组:
public function izpis_narocil($user) { $sql = "SELECT * FROM nabava WHERE id_uporabnika=?"; if( !$this->stmt = $this->mysqli->prepare($sql) ) throw new Exception("MySQL Prepare statement failed: ".$this->mysqli->error); $this->stmt->bind_param("i", $user); $this->stmt->execute(); $result = $this->stmt->get_result(); $narocila = []; // 循环读取每一行,存入数组 while ($row = $result->fetch_assoc()) { $narocila[] = $row; } return $narocila; // 无论有没有数据都返回数组,空数组代表无结果 }
如何显示全部数据
调用修正后的函数后,你可以用以下方式展示数据:
开发调试用(快速查看结构)
// 假设你已经实例化了数据库类 $user_id = 123; // 替换成实际的用户ID $narocila = $db->izpis_narocil($user_id); // 用print_r格式化输出数组结构 echo '<pre>'; print_r($narocila); echo '</pre>';
生产环境用(格式化展示内容)
$user_id = 123; $narocila = $db->izpis_narocil($user_id); if (empty($narocila)) { echo "暂无订单数据哦~"; } else { foreach ($narocila as $order) { echo "<div class='order-item'>"; echo "订单ID:{$order['id']}<br>"; echo "商品名称:{$order['naziv']}<br>"; // 替换成你表中的实际字段 echo "下单时间:{$order['datum']}<br>"; echo "</div><hr>"; } }
简单总结下:原来的代码只返回了第一行数据,现在通过fetch_all()或者循环遍历,就能拿到所有订单的二维数组,之后不管是调试还是格式化展示都很方便啦~
内容的提问来源于stack exchange,提问作者zupko
相关产品推荐
相关产品推荐

