gpt4 book ai didi

php - Moodle 中的连接查询只返回最后一列,而 mysql 正确返回

转载 作者:行者123 更新时间:2023-11-29 01:38:44 25 4
gpt4 key购买 nike

我的 moodle 数据库中有 2 个表,例如 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

最佳答案

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

因此您需要为每一行返回一个具有唯一 ID 的字段,作为“id”。

关于php - Moodle 中的连接查询只返回最后一列,而 mysql 正确返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com