Когда вы говорите Joomla:
$query->select($db->quoteName(array('NameInQ as nin', 'Name')));
echo $query->dump();
скажет вам:
SELECT `NameInQ as nin`,`Name`
Посмотрите, как он не знает, как отличить имя столбца с псевдонимом от строки с пробелами в нем?
Документы: https://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_quoteName
Если вы хотите назначить псевдонимы именам столбцов в Joomla из метода qn()
/ quoteName()
, вам нужно будет назначить соответствующие псевдонимы для всех столбцов.
$query->select($db->quoteName(array('NameInQ', 'Name'), array('nin', 'Name')));
Отображается как:
SELECT `NameInQ` AS `nin`,`Name` AS `Name`
// ^-------^----^---^-^----^----^----^-- everything aliased, everything backtick wrapped
Или, конечно, вы можете индивидуализировать quoteName()
вызовы, вы можете избежать псевдонимов для каждого столбца.
$query->select(array($db->quoteName('NameInQ', 'nin'), $db->quoteName('Name')));
Отображается как:
SELECT `NameInQ` AS `nin`,`Name`
Наконец, правда в том, что вам даже не нужно , чтобы заключить в кавычки любое из имен столбцов вашего примера, потому что запрос будет стабильным / безопасным без дополнительных вызовов метода. * Я рекомендую не использовать их, чтобы свести к минимуму раздувание запросов и усталость глаз разработчика.
$query->select(array('NameInQ AS nin', 'Name'));
или даже в необработанном виде:
$query->select('NameInQ AS nin, Name');
Для записи, Name
(MYSQL не чувствителен к регистру) - это КЛЮЧЕВОЕ СЛОВО, но это НЕ РЕЗЕРВНОЕ КЛЮЧЕВОЕ СЛОВО.
См. Документ MySQL: https://dev.mysql.com/doc/refman/5.5/en/keywords.html#keywords-5-5-detailed-N (рядом с Name
нет "(R)" *