当你告诉 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
如果您想通过 qn() / quoteName() 方法在 Joomla 中为列名分配别名,您需要为所有列指定相应的别名。
$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)”