majordomo
majordomo copied to clipboard
error clearScheduledJob 2 (((
https://github.com/sergejey/majordomo/blob/5f9a1993881f8e0dc9966979af5afdbaa888587d/lib/common.class.php#L384
Функция DBSafe экранирует символ подстановки в маске слэшем((
и
SQLExec("DELETE FROM jobs FROM jobs WHERE TITLE LIKE '" . DBSafe('motion%') . "'")
превращается в
SQLExec("DELETE FROM jobs FROM jobs WHERE TITLE WHERE TITLE LIKE 'motion\%')
, что не работает.
dbsafe1() не экранирует % и всем бы была хороша, но в случае like хорошо бы экранировать символ _, который часто используется в названиях джобов и, в то же время, является одиночной маской в mySQL
вот так у меня работает
function clearScheduledJob($title)
{
$title = str_replace("_", "\_", dbsafe1($title)); //dbfsafe1 не экранирует %, тут добавил экранирование \_ (часто встречается в названиях джобов)
SQLExec("DELETE FROM jobs WHERE TITLE LIKE '" . $title . "'");
}
Использование LIKE тут ненужно и вредно. DBSafe защищает только от кривых рук. я у себя это все давно убрал.
см. встроенные в МДМ функции -- заявлено ClearScheduledJob('title'); -- может использоваться маска типа "title%"