php中mysqli_fetch_assoc( )与mysqli_fetch_row( )的区别

本文介绍了 PHP 中使用 mysqli_fetch_assoc() 和 mysqli_fetch_row() 方法从 MySQL 数据库查询结果中获取数据的不同方式。mysqli_fetch_row() 通过数字索引访问数据,而 mysqli_fetch_assoc() 则通过字段名称作为关键字来访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相同点:php中php中mysqli_fetch_assoc()与mysqli_fetch_row()都是把查询结果的第一行返回到一个数组中。

不同点
mysqli_fetch_row是通过数字索引取值。例如:

$res=mysqli_query($con,$sql);//返回的资源
$arr=mysqli_fetch_row($res);//把查询结果的第一行返回到$arr 数组中
print_r($arr);
print_r($arr[0]);//通过索引取值

在这里插入图片描述
然而mysqli_fetch_assoc()用关键字索引取值。比如:

$res=mysqli_query($con,$sql);//返回的资源
$arr=mysqli_fetch_assoc($res);
print_r($arr);
echo $arr['people'];
### MySQLi 查询结果处理函数对比 #### mysqli_fetch_row `mysqli_fetch_row()` 返回一个数值数组,该数组包含了来自结果集的一行数据。如果不存在更多的行,则返回 `null` 或者 `false`。 ```php $result = $mysqli->query("SELECT id, name FROM users"); $row = $result->fetch_row(); echo "ID: {$row[0]}, Name: {$row[1]}"; ``` 此方法适合于不需要字段名的情况,只关心列的位置[^1]。 #### mysqli_fetch_assoc `mysqli_fetch_assoc()` 将结果集中的一行作为关联数组返回,键名为数据库中的字段名称。当不再存在其他行时也会返回 `false`。 ```php $result = $mysqli->query("SELECT id, name FROM users"); $row = $result->fetch_assoc(); echo "ID: {$row['id']}, Name: {$row['name']}"; ``` 这种方式便于通过字段名字访问数据,在大多数情况下更为直观易读[^2]。 #### mysqli_fetch_array `mysqli_fetch_array()` 可以同时提供两种类型的索引——数字和字符串(即上述两者)。默认行为取决于传递给它的第二个参数: - 如果设置为 `MYSQLI_ASSOC` ,则仅获取关联数组; - 设置成 `MYSQLI_NUM` 则得到纯数位索引的结果; - 使用 `MYSQLI_BOTH`(默认),可以获得混合形式的数组。 ```php $result = $mysqli->query("SELECT id, name FROM users"); // 获取关联加数字索引的组合型数组 $row = $result->fetch_array(MYSQLI_BOTH); print_r($row); // 输出: // Array ( // [0] => 1, // ["id"] => 1, // [1] => John Doe, // ["name"] => John Doe // ) ``` 这使得开发者可以在同一时间利用位置或名称来引用同一个值[^3]。 #### mysqli_fetch_all 不同于前面三个逐行取出记录的方式,`mysqli_fetch_all()`一次性提取整个结果集并将其转换为二维数组。同样支持指定是获得关联还是数字索引的形式,默认采用后者(`MYSQLI_NUM`)。 ```php $result = $mysqli->query("SELECT id, name FROM users LIMIT 5"); $rows = $result->fetch_all(MYSQLI_ASSOC); foreach ($rows as $row){ printf("ID:%d ,Name:%s\n", $row["id"], htmlspecialchars($row["name"])); } ``` 对于大数据量而言,这种方法可能会消耗较多内存资源;因此建议谨慎使用,并考虑分页或其他优化策略[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少加冰~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值