我正在将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关键字。
答案 0 :(得分:1)
不要添加表名前缀“mdl_”,因为使用{}它会自动添加。
答案 1 :(得分:0)
SQL语法没问题,所以这不是问题。您需要检查$ assignment_id的值,可能未设置变量,或使用不正确的值类型设置,这就是导致错误的原因。
我建议你补充一下:
var_dump($assignment_id);
在此查询之前,看看你得到了什么。如果您收到“未定义”消息,请检查软件的逻辑,看看可能导致此问题的原因。