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
我似乎无法让 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