以下是PHP中mysqli_fetch四种查询函数的详细对比及示例输出,通过print_r展示不同返回格式(用<pre>标签清晰呈现):
1. mysqli_fetch_array
特点:默认返回同时包含数字索引和关联索引的数组(MYSQLI_BOTH)。
$result = $conn->query("SELECT id, name FROM users");
$row = $result->fetch_array(); // 默认 MYSQLI_BOTH
echo "<pre>"; print_r($row); echo "</pre>";输出:
Array ( [0] => 1 // 数字索引 [id] => 1 // 关联索引 [1] => "Alice" // 数字索引 [name] => "Alice" // 关联索引 )
2. mysqli_fetch_assoc
特点:仅返回关联索引数组(字段名作为键)。
$row = $result->fetch_assoc(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
Array ( [id] => 1 [name] => "Alice" )
3. mysqli_fetch_row
特点:仅返回数字索引数组(按查询字段顺序)。
$row = $result->fetch_row(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
Array ( [0] => 1 [1] => "Alice" )
4. mysqli_fetch_object
特点:返回对象,通过属性访问字段。
$row = $result->fetch_object(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
stdClass Object ( [id] => 1 [name] => "Alice" )
关键区别总结:
索引方式:
fetch_array:双索引(数字+关联)。fetch_assoc:仅关联索引。fetch_row:仅数字索引。fetch_object:对象属性。性能:
fetch_row最快(无额外索引),fetch_object稍慢(需实例化)。适用场景:
明确字段名时用
fetch_assoc;需混合索引用
fetch_array;面向对象代码用
fetch_object;高性能处理用
fetch_row。