1

我正在将 Moodle 1.0 模块移植到 2.0 版。在检查几个 PHP 文件中的错误时,我遇到了一条查询错误消息,但没有表明错误是什么。这是查询:

global $DB; //required global variable

$vms = $DB->get_records_sql('SELECT DISTINCT vm.*, uva.assignment_id, gm.groupid,
                                    CASE WHEN gm.groupid IS NULL THEN uva.user_id ELSE NULL END user_id
                                    FROM {mdl_vMoodle_Virtual_Machine} vm 
                                    INNER JOIN {mdl_vMoodle_UVA} uva ON vm.id = uva.vm_id 
                                    LEFT JOIN {mdl_groups_members} gm ON gm.userid = uva.user_id
                                    WHERE uva.assignment_id = :assignmentid', array('assignmentid'=>$assignment_id));

谁能告诉我这个函数调用有什么问题?

更新:删除 DISTINCT 使错误消失。Moodle 2.0 的文档很少,所以我不确定它是否根本不接受 distinct 关键字。

4

2 回答 2

1

不要添加表名前缀“mdl_”,因为使用 {} 它会自动添加。

于 2012-12-16T04:44:44.460 回答
0

SQL 语法没问题,所以这不是问题。您需要检查 $assignment_id 的值,该变量可能未设置,或者设置的值类型不正确,这就是导致错误的原因。

我建议你添加:

var_dump($assignment_id);

就在这个查询之前,看看你得到了什么。如果您收到“未定义”消息,请检查软件的逻辑以查看可能导致此问题的原因。

于 2012-12-16T04:07:12.983 回答