Moodle:在 $DB->get_records_sql 中使用 SQL IN 运算符

Moodle: Using SQL IN operator in $DB->get_records_sql

我似乎无法让 SQL IN 运算符以正确的方式将变量输入 sql 字符串。

当我这样做时:

$activities = '('.$section->sequence.')';



$sql = "SELECT assign.name FROM {assign} assign

        INNER JOIN {course_modules} cm

            ON cm.instance = assign.id

        INNER JOIN {modules} m

            ON m.id = cm.module

        WHERE m.name = 'assign' AND

            cm.id IN ?";

$assignments = $DB->get_records_sql($sql, array($activities));

它不起作用,它说我的 sql 语法围绕 IN 运算符存在错误。

但是当我这样做时,它起作用了。 (不使用?)

$sql = "SELECT assign.name FROM {assign} assign

        INNER JOIN {course_modules} cm

            ON cm.instance = assign.id

        INNER JOIN {modules} m

            ON m.id = cm.module

        WHERE m.name = 'assign' AND

            cm.id IN ".$activities;



$assignments = $DB->get_records_sql($sql, null);

如何使用正确的 Moodle 语法让它工作。 IE。 $assignments = $DB->get_records_sql($sql, array($activities));

您的问题已在 Moodle 论坛中得到解答:https://moodle.org/mod/forum/discuss.php?d=328597