Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PDO Использование IN, вложенный SELECT

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Запрос с ипользованием IN и вложенного SELECT не работает в PDO
soulreg
Отправлено: 09 Февраля, 2014 - 21:11:00
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Доброго времени суток, уважаемые гуру!
Уже была тема про использование IN в запросе http://forum.php.su/topic.php?fo...8&topic=5378 (решение с использованием плейсхолдеров)

Но у меня немного другой случай.
Есть запрос:
CODE (htmlphp):
скопировать код в буфер обмена
  1.        
  2. $query = "SELECT COUNT(*) FROM pages
  3.         WHERE pages.visible=1 AND pages.parent_type='menu' AND pages.lang=:lang
  4.         AND (pages.parent IN (SELECT id FROM menu WHERE menu.parent=:menu_id) OR pages.parent=:menu_id)";
  5. try
  6. {
  7.         $STH = $DBH->prepare($query);
  8.         $STH -> bindParam(':lang',$page->lang, PDO::PARAM_STR);
  9.         $STH -> bindParam(':menu_id',$page->PageData['id'], PDO::PARAM_INT);
  10.         $STH -> execute();
  11. }
  12. catch (PDOException $e) {echo  $e ->getMessage();}
  13. $TotalItemsCount = $STH->fetchColumn();

Почему-то не работает в PDO!
Проверял значения переменных, используемых в bind
Проверял запрос в HeidiSQL, работает нормально
В чём может быть причина?
 
 Top
tuareg
Отправлено: 09 Февраля, 2014 - 21:40:25
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Как вариант, еще раз сделайте
PHP:
скопировать код в буфер обмена
  1.  
  2. $STH -> bindParam(':menu_id',$page->PageData['id'], PDO::PARAM_INT);
  3.  

Вы же используете эту переменную в двух местах? Если PDO использует нативный синтаксис MySQL то должно помочь. Иначе смысла использовать PDO я вообще не вижу))
 
 Top
soulreg
Отправлено: 10 Февраля, 2014 - 12:08:21
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Всё, разобрался!
Запрос рабочий, у меня была логическая ошибка в другой части кода.
Тему можно закрыть

(Отредактировано автором: 10 Февраля, 2014 - 12:08:47)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB