PHP中需根据数据库扩展将查询结果资源转为数组:mysqli用mysqli_fetch_all()等函数;PDO用fetchAll()并指定FETCH常量;废弃的mysql扩展不可用于PHP 7.0+;单行结果可统一处理;JSON字段需额外json_decode()解析。

如果在PHP中执行数据库查询后得到的是一个资源(resource)或对象(如mysqli_result、PDOStatement),而您需要将其转换为普通数组以便后续处理,则需根据所使用的数据库扩展选择对应方法。以下是几种常见扩展下的转换方式:
mysqli扩展提供多种函数可将查询结果集转换为关联数组、索引数组或二者混合的数组。最常用的是mysqli_fetch_assoc()、mysqli_fetch_array()和mysqli_fetch_all()。
1、使用mysqli_fetch_all()一次性获取全部结果为二维数组,参数MYSQLI_ASSOC返回关联数组,MYSQLI_NUM返回索引数组,不传参默认为二者混合。
2、若需逐行处理,可用mysqli_fetch_assoc()循环读取每行为关联数组。
立即学习“PHP免费学习笔记(深入)”;
3、确保在调用前已成功执行mysqli_query()并获得有效结果集,否则mysqli_fetch_all()会返回NULL。
PDO支持通过fetch()、fetchAll()等方法控制返回格式,默认情况下fetch()返回关联与索引并存的数组,可通过设置PDO::FETCH_*常量调整输出类型。
1、执行查询后调用$stmt->fetchAll(PDO::FETCH_ASSOC)获取全量关联数组。
2、若仅需一行,使用$stmt->fetch(PDO::FETCH_NUM)获取索引数组。
3、必须在prepare()和execute()成功后调用fetchAll(),且PDO需设置错误模式为异常模式(PDO::ERRMODE_EXCEPTION)便于捕获错误。
mysql_*系列函数自PHP 7.0起已被完全移除,但部分遗留代码仍可能出现。该扩展中mysql_fetch_array()是主要转换函数,支持指定返回类型。
1、mysql_query()返回结果资源后,用mysql_fetch_array($result, MYSQL_ASSOC)获取关联数组。
2、使用MYSQL_NUM可得纯数字索引数组,MYSQL_BOTH为默认值(同时含数字与字符串键)。
3、此扩展不可用于PHP 7.0及以上版本,迁移时必须改用mysqli或PDO。
当查询只返回单条记录(如SELECT COUNT(*)或LIMIT 1),可统一用当前扩展的“单行取值”函数配合array_values()或强制类型转换确保结构一致。
1、对mysqli_result对象,先调用mysqli_fetch_row()再用array_values()标准化键名。
2、对PDOStatement,使用fetch(PDO::FETCH_NUM)后直接赋值给变量。
3、注意NULL值在转换后仍为NULL,不会自动转为空字符串或0。
若数据库字段存储JSON格式字符串(如MySQL的JSON类型或TEXT字段),即使主结果已是PHP数组,该字段本身仍为字符串,需额外解码。
1、对mysqli或PDO取出的含JSON字段的行,使用json_decode($row['json_field'], true)转为关联数组。
2、检查json_last_error()返回值是否为JSON_ERROR_NONE,避免因非法JSON导致返回NULL。
3、若字段可能为空或非JSON字符串,应先is_string()和!empty()判断再解码。
以上就是php的query怎么搞成数组_PHP将查询结果query转为数组的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号