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

Moodle使用get_record_sql仅返回首条记录,如何获取全部查询数据?

Moodle数据库查询获取全部匹配记录的解决方法

问题原因

Moodle的数据库操作类中,get_record_sql() 方法的设计逻辑本身就是仅返回查询结果的第一条匹配记录,部分Moodle版本如果检测到匹配多条记录还会抛出警告,该方法仅适用于查询唯一结果的场景。

解决方法

直接将调用的方法替换为Moodle官方提供的 get_records_sql() 即可,该方法会返回所有符合查询条件的记录数组,数组默认以查询结果的第一个字段值为键,每个元素对应一行查询结果的字段对象。

修改后的代码示例

$sql = " SELECT bbb.name, ue.name AS UeName, bbb.timecreated, bbb.timemodified
FROM mdl_bigbluebuttonbn AS bbb
JOIN mdl_block_report_bbb_user_events AS ue
ON ue.meeting_id = bbb.id
";
// 替换get_record_sql为get_records_sql获取全量匹配数据
$result = $DB->get_records_sql($sql);
var_dump($result);die();

补充注意事项

  • 如果查询结果量极大,建议使用get_recordset_sql()方法迭代处理结果,避免一次性加载全量数据导致内存溢出
  • 后续如果需要增加查询条件,务必遵循Moodle规范使用参数绑定,不要直接把变量拼接进SQL语句,避免SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:00:02