在MySQL查询中传递变量

时间:2014-10-04 15:37:35

标签: php mysql joomla

我的功能完美无缺:

function listimages($session) {
  $db = JFactory::getDbo();
  $query = $db->getQuery(true);
  $query->select($db->quoteName(array('url_name', 'file_name')));
  $query->from($db->quoteName('#__webfoot_photo_studio_photos')); 
  $db->setQuery($query);
  $results = $db->loadObjectList();

return $results;              
}

直到我尝试添加WHERE语句:

$query->where($db->quoteName('session' == '$session'));

'会话'是数据库中的列,$ session是通过函数传入的值。

我收到此错误:

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 '' at line 3 SQL=SELECT `url_name`,`file_name` FROM `p9e2i_webfoot_photo_studio_photos` WHERE 

有关修复此语法的任何建议或建议都非常感谢。我一直无法找到解决方案。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

function listimages($session) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('url_name', 'file_name')))
          ->from($db->quoteName('#__webfoot_photo_studio_photos'))
          ->where($db->quoteName('session') . ' = ' . $db->quote($session));
    $db->setQuery($query);
    $results = $db->loadObjectList();
    return $results;              
}
  1. 删除了双==并使用了一个
  2. 移动了引号内的=
  3. 使用$session
  4. 隐藏$db->quote($session)变量
  5. 您的quoteName不正确,因此更改了
  6. 请记住,quote用于转义值,quoteName用于列。

    每当有疑问时,请始终返回Joomla文档以获取数据库查询,因为它提供了一些很好的示例:

    http://docs.joomla.org/Selecting_data_using_JDatabase

    希望这有帮助