You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用foreach读取MySQL数据库遇问题,疑与多维数组有关

解决foreach读取MySQL数据的问题

你的问题出在mysqli_fetch_assoc($result)这个函数上——它只返回查询结果中的一行数据,是个一维数组。你用foreach遍历这个一维数组时,$producto拿到的是每个字段的值(比如id的数值、producto的字符串),不是数组,所以访问$producto['producto']肯定会报错。另外你还漏了echo,就算数据逻辑对了也不会把内容输出到页面。

下面给两种修复方案:

方案一:循环逐行读取数据

通过while循环每次读取一行数据,直到结果集为空:

<?php
$con = mysqli_connect('localhost', 'root', '', 'productos') or exit('No se pudo conectar con la base de datos.');

$sql = "SELECT id, producto, marca, codigo FROM productos";

$result = mysqli_query($con, $sql);

if (mysqli_num_rows($result) > 0) {
    // 循环读取每一行关联数组
    while ($producto = mysqli_fetch_assoc($result)) { ?>
        <div>
            <h3><?php echo $producto['producto']; ?></h3>
            <h4><?php echo $producto['marca']; ?></h4>
            <h4><?php echo $producto['codigo']; ?></h4>
        </div>
    <?php
    }
} else { ?>
    <h2>No hay productos para mostrar</h2>
<?php
}
?>

方案二:一次性获取所有二维数组数据

用mysqli_fetch_all()把所有查询结果转换成二维关联数组,再用foreach遍历:

<?php
$con = mysqli_connect('localhost', 'root', '', 'productos') or exit('No se pudo conectar con la base de datos.');

$sql = "SELECT id, producto, marca, codigo FROM productos";

$result = mysqli_query($con, $sql);

if (mysqli_num_rows($result) > 0) {
    // 获取所有行,返回二维关联数组
    $productos = mysqli_fetch_all($result, MYSQLI_ASSOC);
    
    foreach ($productos as $producto) { ?>
        <div>
            <h3><?php echo $producto['producto']; ?></h3>
            <h4><?php echo $producto['marca']; ?></h4>
            <h4><?php echo $producto['codigo']; ?></h4>
        </div>
    <?php
    }
} else { ?>
    <h2>No hay productos para mostrar</h2>
<?php
}
?>

注意:mysqli_fetch_all()需要传入MYSQLI_ASSOC参数,确保返回的是键名为字段名的关联数组,否则默认是索引数组,没法用$producto['producto']访问。

内容的提问来源于stack exchange,提问作者BenPesoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:01:25