Запрос в бд

  • 7 Ответов
  • 149 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн sSeifeRr

Запрос в бд
« : 02.08.2017, 18:35:13 »
Помогите пожалуйста собрать запрос в бд. Вот что получилось сделать, но ругается You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'тест1', 'текст2 ' at line 3.
Код: (php) [Выделить]
$query = $db->getQuery(true);
$sub_query= $db->getQuery(true);

$query->select($db->quoteName('questList'))
      ->from($db->quoteName('#__users'))
  ->where($db->quoteName('id'). ' = ' . (int) $c);
     
$db->setQuery($query);

$result = $db->loadResult();
$questList = unserialize($result);
$questList = implode("', '", $questList); //получаем строку в виде string(145) "текст1', 'текст2', 'текст3"


$sub_query->select('*')
      ->from($db->quoteName('test'))
  ->where($db->quoteName('ds')  . ' IN (' . $questList . ')');

 
$db->setQuery($sub_query);
$result = $db->loadObjectList();

*

Оффлайн SeBun

Re: Запрос в бд
« Ответ #1 : 02.08.2017, 19:29:43 »
Перед

Код: (php) [Выделить]
$db->setQuery($sub_query);
напишите

Код: (php) [Выделить]
die ($sub_query);
И посмотрите, как выглядит ваш запрос.
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Администрирование
Ник занят | По личным вопросам не консультирую

*

Оффлайн fsv

Re: Запрос в бд
« Ответ #2 : 02.08.2017, 19:36:03 »
первой и последней кавычки в IN нет
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения

*

Оффлайн sSeifeRr

Re: Запрос в бд
« Ответ #3 : 02.08.2017, 19:40:58 »
Если убираю кавычки   ->where($db->quoteName('ds')  .  IN (' . $questList . ')); то выдает Call to undefined function IN()

*

Оффлайн fsv

Re: Запрос в бд
« Ответ #4 : 02.08.2017, 20:08:45 »
Если убираю кавычки 
"нет" подразумевает добавить, а не убрать

тут нет -
//получаем строку в виде string(145) "текст1', 'текст2', 'текст3"
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения

*

Оффлайн sSeifeRr

Re: Запрос в бд
« Ответ #5 : 02.08.2017, 20:14:40 »
$questList = $db->quote($questList);
преобразует строку в string(151) "'тест1\', \'тест3\', \'тест3'"  я так понял надо как-то заэкранировать и боковые кавычки, но как?
« Последнее редактирование: 02.08.2017, 20:18:52 от sSeifeRr »

*

Оффлайн SmokerMan

Re: Запрос в бд
« Ответ #6 : 02.08.2017, 20:22:24 »
Цитировать
$questList = implode("', '", $questList); //получаем строку в виде string(145) "текст1', 'текст2', 'текст3"
что за бред?
            $questList = array('1', '2');
            foreach ($questList as $key => $value) {
                $questList[$key] = $db->quote($value);
            }
            $questList = implode(',', $questList);


*

Оффлайн sSeifeRr

Re: Запрос в бд
« Ответ #7 : 02.08.2017, 20:28:19 »
Вроде разобрался, спасибо