SQL查询出错

时间:2012-12-16 04:01:50

标签: php mysql sql moodle

我正在将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关键字。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我建议你补充一下:

var_dump($assignment_id);

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