MySQL 语法问题 - ORDER BY - Joomla PHP
MySQL Syntax Issue - ORDER BY - Joomla PHP
我有一个我似乎无法弄清楚的语法问题。我正在关注此处的 Joomla 文档:
https://docs.joomla.org/Selecting_data_using_JDatabase#Selecting_Records_from_a_Single_Table
我收到这个错误:
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order DESC' at line 3 SQL=SELECT `id`,`image`,`order`,`status` FROM `vsem6_session_1` ORDER BY order DESC
我的查询是:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'image', 'order', 'status')));
$query->from($db->quoteName('#__session_' . $id));
$query->order('order DESC');
$db->setQuery($query);
$results = $db->loadObjectList();
return $results;
如果我去掉 order 子句,效果很好,但结果当然不是有序的。我到处搜索,无法弄清楚。有人注意到什么吗?我 100% 确定 table.
中有一个 "order" 列
我试过了,没有错误,但仍然没有正确排序。
$query->orderby('order DESC');
order 是 reserved word,因为它在 order by
中使用。因此,要解决 mysql 的混淆,您需要将您对 order 的使用标记为带有反引号的字段名称
$query->order('order DESC');
问题在于您没有使用 quoteName()。
$query->order($db->quoteName('order') . 'DESC');
尽管你说你会更改字段名称,但我添加这个是为了应对有人无法更改名称的情况。
我有一个我似乎无法弄清楚的语法问题。我正在关注此处的 Joomla 文档:
https://docs.joomla.org/Selecting_data_using_JDatabase#Selecting_Records_from_a_Single_Table
我收到这个错误:
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order DESC' at line 3 SQL=SELECT `id`,`image`,`order`,`status` FROM `vsem6_session_1` ORDER BY order DESC
我的查询是:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'image', 'order', 'status')));
$query->from($db->quoteName('#__session_' . $id));
$query->order('order DESC');
$db->setQuery($query);
$results = $db->loadObjectList();
return $results;
如果我去掉 order 子句,效果很好,但结果当然不是有序的。我到处搜索,无法弄清楚。有人注意到什么吗?我 100% 确定 table.
中有一个 "order" 列我试过了,没有错误,但仍然没有正确排序。
$query->orderby('order DESC');
order 是 reserved word,因为它在 order by
中使用。因此,要解决 mysql 的混淆,您需要将您对 order 的使用标记为带有反引号的字段名称
$query->order('order DESC');
问题在于您没有使用 quoteName()。
$query->order($db->quoteName('order') . 'DESC');
尽管你说你会更改字段名称,但我添加这个是为了应对有人无法更改名称的情况。