Это трудно прочитать, потому что он плохо отформатирован, но:
$GLOBALS['MySQL']->getAllWithKey(
"SELECT `ta`.`ID` AS `id`,
`ta`.`Name` AS `title`,
`tm`.`AllowedCount`,
`tm`.`AllowedPeriodLen`
FROM `sys_acl_actions` AS `ta`
LEFT JOIN `sys_acl_matrix` AS `tm` ON `ta`.`ID` = `tm`.`IDAction`
LEFT JOIN `sys_acl_levels` AS `tl` ON `tm`.`IDLevel` = `tl`.`ID`
WHERE `tl`.`ID`='" . $iMembId . "'
ORDER BY `ta`.`Name`", "id");
Я бы, вероятно, покончил со всеми обратными кавычками и убедился, что схема также не учитывает регистр, но я сохранилдля согласованности с вопросом.
У вас также есть возможность внедрения SQL с использованием $iMembId
в предложении WHERE - если пользователи предоставили данные в переменную, вы должны санировать их перед добавлением вВаш SQL (Помните Таблицы Бобби !).В идеале вы должны использовать заполнитель (обычно знак вопроса) и указывать значение $iMembId
в качестве связанного значения при выполнении SQL.
Без этих обратных кавычек оно становится:
$GLOBALS['MySQL']->getAllWithKey(
"SELECT ta.ID AS id,
ta.Name AS title,
tm.AllowedCount,
tm.AllowedPeriodLen
FROM sys_acl_actions AS ta
LEFT JOIN sys_acl_matrix AS tm ON ta.ID = tm.IDAction
LEFT JOIN sys_acl_levels AS tl ON tm.IDLevel = tl.ID
WHERE tl.ID = '" . $iMembId . "'
ORDER BY ta.Name", "id");
Обратите внимание, что в кавычках сохраняется регистр идентификаторов внутри, так что вам, вероятно, придется изменить свою схему, прежде чем работает версия без кавычек.