Moodle自定义插件无法获取数据库数据问题求助
Moodle插件数据库查询错误修正说明
你代码里存在4个直接导致无法获取数据的问题:
- 硬编码表前缀错误:Moodle支持自定义数据库表前缀,你直接写死
mdl_bigbluebuttonbn会导致站点前缀不是mdl时完全查不到数据,正确写法是用大括号包裹不带前缀的表名:{bigbluebuttonbn},$DB对象会自动替换为当前站点配置的正确前缀。 - 查询代码被注释:你核心的数据库查询代码行被注释掉了,当前代码仅会打印SQL语句,不会执行任何数据库查询操作,自然拿不到返回数据。
- 查询方法选择错误:
get_record_sql()仅适用于查询返回单条结果的场景,如果你的SQL没有加LIMIT 1限制、表内数据超过1条时,调用该方法会抛出错误。如果需要获取多条数据,应该改用get_records_sql()方法。 - 参数写法错误:你注释的查询行里
array $params=null是函数定义时的写法,实际调用时不能带类型声明和默认值赋值,无查询参数时直接传空数组或者null即可。
修正后的可运行代码
function get_infos_from_db() { global $DB; $sql = "SELECT * FROM {bigbluebuttonbn}"; // 执行查询获取所有记录 $records = $DB->get_records_sql($sql); // 打印查询结果验证 var_dump($records); return $records; }
如果只需要查询单条记录,可调整为以下写法:
// 示例:查询id为1的单条记录 function get_single_info_from_db($id) { global $DB; $sql = "SELECT * FROM {bigbluebuttonbn} WHERE id = ?"; $record = $DB->get_record_sql($sql, [$id]); var_dump($record); return $record; }
内容的提问来源于stack exchange,提问作者Marco Medic
相关产品推荐
相关产品推荐

