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 に答える