Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PDO] Можно ли сделать 2 запроса одновременно. 
:(
    Опции темы
Рыжий
Дата 21.2.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Здравствуйте!
Обыскал все что смог – реального примера не нашел. Никак не могу решить эту проблему, уже начался нервный тик.

Нужно (упростил до максимума ) ):
Код

Select id from `BD`

While ($row=mysql_fetch_array(…))
{
Select id from `other_bd` where `param` = $row['id'];
}


Никак не могу это сделать в PDO smile
Вот максимум, чего я добился: 
(и думаю копать нужно в сторону ->prepare() )

Код


$stmt = $db->prepare("select * from `users` where `id`=:id limit 1");

$result = $db->query("select id from `categories`");

while ($rs=$result->fetch(PDO::FETCH_ASSOC))
{

      $stmt->bindParam(":id",$rs['id']);
      $stmt->execute();

      $row=$stmt->fetch(PDO::FETCH_ASSOC);

      echo $rs['id'].' - '.$row['login']."<br />";
}
$stmt=null;

сразу предупреждаю – пример не несет никакой смысловой нагрузки. НО синтаксически он верный! И если делать то же самое без PDO – все работает.

Это сообщение отредактировал(а) Рыжий - 21.2.2007, 20:13
PM MAIL ICQ   Вверх
mishaSL
Дата 21.2.2007, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Не часто работаю с PDO, но попробуй так:
Код

$stmt = $db->prepare("select * from `users` where `id`=:id limit 1");
$result = $db->query("select id from `categories`");
while ($rs=$result->fetch(PDO::FETCH_ASSOC))
{
      $stmt->execute(array(':id' => $rs['id']));
      $row=$stmt->fetch(PDO::FETCH_ASSOC);
      echo $rs['id'].' - '.$row['login']."<br />";
}
$stmt=null;


Если не работает, то покажи что выводит.

Добавлено @ 21:36 
Ты хоть и сказал что скрипт не имеет смысловой нагрузки, но всеже добавлю, что делать запросы в цикле не самое хорошее решение.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Glip
Дата 21.2.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



по сильно упрощеному примеру сразу хочется собрать массив id-ов и сделать Select id from `other_bd` where `param` in ( массив );
или выгрести все сразу join-ом smile


--------------------
user posted image
PM MAIL   Вверх
Рыжий
Дата 21.2.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Glip, Точна! Join поможет!!!
Код


$result = $db->query("select categories.id as id ,users.login as login from `categories`,`users` where categories.id=users.id");

while ($rs=$result->fetch(PDO::FETCH_ASSOC))
{
  echo $rs['id'].' - '.$rs['login']."<br />";
}



mishaSL, Код собственно и ничем не отличается от моего. $row['login'] просто пустой, хотя $rs['id'] имеет значения. Интересно, а можно ли в while вообще работать с PDO. smile 
PM MAIL ICQ   Вверх
Рыжий
Дата 23.2.2007, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Цитата(Рыжий @  21.2.2007,  23:54 Найти цитируемый пост)
Интересно, а можно ли в while вообще работать с PDO.  


Я думаю нет, как и невозможно произвести два запроса одновременно. Для этого нужно использовать буферизацию вывода.
PM MAIL ICQ   Вверх
Рыжий
Дата 25.2.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Вот реальный пример, который мне нужно сделать:

Как достать все подкатегории из Категорий??

Раньше я всегда делал через циклы, а сейчас как это можно сделать? Желательно без буферизации??

каталог имеет такой вид:

TOP
один 
-раз
-два
-три

два
-раз
--разраз
-два
-три
--тритри

и т.п. То есть привычный каталог с бесконечными подкатегориями. Как сделать запрос на вывод всего???

PM MAIL ICQ   Вверх
Glip
Дата 25.2.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



мне кажется зависит от того как оно хранится и как должно отображаться


--------------------
user posted image
PM MAIL   Вверх
Рыжий
  Дата 26.2.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Glip, В БД есть поле parent_id в котором указывается родительский каталог.

Хотелось чтобы отображалось деревом как указано выше в посте. Чтобы циклом обходил категории, и искал подкатегории. 

Я видел как это делается рекурсией. Но этот подход в PDO без буферизации не сделать smile

Что подскажите?


Это сообщение отредактировал(а) Рыжий - 26.2.2007, 00:31
PM MAIL ICQ   Вверх
mishaSL
Дата 26.2.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Попробуй на основе этого сделать:
http://forum.vingrad.ru/index.php?showtopi...t&p=1019477


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.