Joomla 3.2.4 jdatabase在where子句中的未知列

时间:2014-07-21 06:04:57

标签: mysql joomla3.0

我在joomla中使用Hikashop购物车。每当用户将产品添加到购物车时,Hikashop会将用户的会话ID添加到#__ hikashop_cart表中。我试图通过将它与从JFactory :: getSession代码获得的id值匹配来选择该会话ID。

ATM我收到以下错误:

1054 - 未知栏' acl7e1bn099rrlhkvsrhl13bu7'在' where子句' SQL = SELECT session_id FROM hady9_hikashop_cart WHERE session_id = acl7e1bn099rrlhkvsrhl13bu7

我的查询如下,任何帮助都将不胜感激。

$user = JFactory::getUser();
$id = $user->get('id');

$session =& JFactory::getSession();
$thesession = $session->getId();

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query
 ->select($db->quoteName('session_id'))
 ->from($db->quoteName('#__hikashop_cart'))
 ->where('session_id = '.$thesession);

$db->setQuery($query);
$results = $db->loadResult();
echo $results;

3 个答案:

答案 0 :(得分:0)

SELECT session_id
FROM hady9_hikashop_cart
WHERE session_id = acl7e1bn099rrlhkvsrhl13bu7

您已列出acl7e1bn099rrlhkvsrhl13bu7没有引号,因此MySQL将其视为列名,当然不存在。引用它应该可以解决问题:

$query
 ->select($db->quoteName('session_id'))
 ->from($db->quoteName('#__hikashop_cart'))
 ->where('session_id = '. $db->quote($thesession));

答案 1 :(得分:0)

SELECT session_id FROM hady9_hikashop_cart 
          WHERE session_id = acl7e1bn099rrlhkvsrhl13bu7

此处生成的查询应为

SELECT session_id FROM hady9_hikashop_cart 
       WHERE session_id = 'acl7e1bn099rrlhkvsrhl13bu7'

进行必要的更改以在acl7e1bn099rrlhkvsrhl13bu7周围添加报价。

答案 2 :(得分:0)

您必须引用会话ID,最好使用quote()方法。

$query
 ->select($db->quoteName('session_id'))
 ->from($db->quoteName('#__hikashop_cart'))
 ->where('session_id = '. $db->quote($thesession));
相关问题