2016-10-18 20 views
0

внутри ядра Moodle при отправке запроса в базу данных есть вызов preg_match_all ищет: (двоеточие), чтобы найти параметры запроса.php preg_match_all избегать кавычки

У меня есть строка (внутри ""), состоящая из цифр, двоеточия и буквы ("102516101: t").

Конечно, это не вменение параметра. еще Moodle ожидает один из-за толстой кишки (:).

Как я могу предотвратить preg_match_all Внутри котировки? или у кого-нибудь другая идея?

+0

Заполнитель в кавычках не должен считаться заполнителем. Можете ли вы добавить свой код? – chris85

+0

привет, спасибо. это скрипт sql: – Lihi

+0

привет, спасибо. код намного сложнее, но в основном это - «SELECT DISTINCT GM.userid, U.firstname, U.lastname FROM». $ CFG-> dbname. '.mdl_groups G WHERE G.name = "102516101: t"' вызов preg_match_all - '$ named_count = preg_match_all ('/(? Lihi

ответ

2

В соответствии с комментариями, приведенными выше, вы должны явно указать переменные, используемые в вашем операторе SQL. Другими словами, вы не должны создавать инструкцию SQL вручную или минимальное значение.

Пример:

$sql = "SELECT * FROM {groups} WHERE name = :name"; 
$params = array('name' => '102516101:t'); 
$DB->execute($sql, $params); 

Вы также отметить, что имена таблиц указаны так: {table_name}, они автоматически расширяются с правом приставки.

+0

это сработал отлично .. спасибо! – Lihi

+0

Нет проблем! Не могли бы вы отметить этот ответ в качестве выбранного ответа? – FMCorz