2014-10-04 3 views
0

У меня есть функция, которая работает отлично:Pass переменная в запросе MySQL

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 

Любые предложения или советы по фиксируя этот синтаксис действительно ценится. Я не смог найти решение.

+0

Я не очень знакомы с Joomla, но не должны 't это '$ query-> где ($ db-> quoteName (' session '== $ session));'? – FAS

+0

Спасибо, но синтаксис предложения такой же, как тот, который я пытаюсь использовать. По какой-то причине он, похоже, бросает SQL-ошибку. – BradM

+0

Если вы 'var_dump ($ session);', вы получаете какие-либо результаты? – Lodder

ответ

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 переменного с помощью $db->quote($session)
  4. Вашего quoteName неверен поэтому изменил его вокруг

Просто помните, что для устранения значений используется quote, а для столбцов используется quoteName.

Всякий раза, когда вы сомневаетесь, всегда отсылает к документации по Joomla для запросов к базе данных, поскольку она обеспечивает хорошие примеры:

http://docs.joomla.org/Selecting_data_using_JDatabase

Надеется, что это помогает

+0

Большое вам спасибо! Это прекрасно - я просмотрю документы, я все еще очень разбираюсь в Joomla MVC. Еще раз спасибо, – BradM

+0

@BradM - Вы более чем рады. Рад, что это помогло :) – Lodder

Смежные вопросы