我的moodle数据库中有两个表,例如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
答案 0 :(得分:4)
问题是您的查询在每条记录中为其ID返回相同的值:&#34; 25&#34;。 Moodle get_records_ *方法期望每个结果都具有唯一的id,因为它使用该id作为它返回的结果数组中的数组键。所以它找到了你所有的结果,但是当它循环遍历它们时,它将每个结果添加到数组键&#34; 25&#34;,所以当它到达结尾时,它只有最后的结果在返回的数组中。
因此,您需要为每一行返回一个唯一ID的字段,如&#34; id&#34;。