仅在 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"。
我的 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"。