只有当mysql正确返回时,Moodle中的Join查询才会返回最后一列

时间:2015-08-19 12:24:29

标签: php mysql inner-join moodle

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

mdl_equiz_details:

enter image description here

mdl_equiz_details

enter image description here

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

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

enter image description here

我在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页面中的结果

enter image description here

这显然是最后的结果。

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

Moodle版本:2.9.1

1 个答案:

答案 0 :(得分:4)

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

因此,您需要为每一行返回一个唯一ID的字段,如&#34; id&#34;。