2016-02-23 1 views
2

Я не могу заставить 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. то есть. $assignments = $DB->get_records_sql($sql, array($activities));

ответ