仅在 Moodle 中加入查询 returns 最后一列,同时 mysql returns 正确

Join query in Moodle only returns last column only while mysql returns correctly

我的 moodle 数据库中有 2 个表,例如 equiz_details 和 equiz_responses,如下所示:

mdl_equiz_details:

mdl_equiz_details

我使用连接查询来获取所需形式的结果,如下所示:

SELECT distinct ed.quizid,ed.questionnumber,ed.questiontext,ed.optiontext1,ed.optiontext2,ed.optiontext3,ed.optiontext4, ed.correctanswer,er.studentanswer FROM `mdl_equiz_details` as ed INNER JOIN `mdl_equiz_responses` as er ON ed.quizid = er.quizid and ed.questionnumber = er.questionnumber and er.studentid=4 and er.quizid=25

我在 mysql 数据库中发起了查询,得到的结果如下:

结果为mysql

我在我的 Moodle 页面中使用相同的查询并尝试获取如下结果::

<?php
require_once('../../config.php');
global $DB; 

$quizresdetails = $DB->get_records_sql("SELECT ed.quizid,ed.questionnumber,ed.questiontext,ed.optiontext1,ed.optiontext2,ed.optiontext3,ed.optiontext4, ed.correctanswer,er.studentanswer FROM {equiz_details} ed INNER JOIN {equiz_responses} er ON ed.quizid = er.quizid and ed.questionnumber = er.questionnumber and er.studentid=4 and er.quizid=25");      

var_dump($quizresdetails);

?>

我得到的结果如下:

Moodle 页面结果

这显然是最后的结果。

我做错了什么?如何在我的 Moodle 页面中获取完整结果?

Moodle 版本:2.9.1

问题是您的查询return在每条记录中为其 ID 使用相同的值:“25”。 Moodle get_records_* 方法期望每个结果都有一个唯一的 ID,因为它使用该 ID 作为结果数组中的数组键 returns。所以它找到了你所有的结果,但是当它循环遍历它们时,它将每个结果添加到数组键“25”,所以当它到达最后时,它只有 returned 数组中的最后一个结果.

所以你需要return一个字段,每行都有一个唯一的id,如"id"。