Автор Тема: выборка из базы  (Прочитано 2952 раз)

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

Оффлайн grinder

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 90
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« : 06 Мая 2002, 06:38:20 »
Делаю запрос в базу, потом смотрю результаты с помощью while($row=mysql_fetch_array()). Но потом, в этом же цикле, мне нужно сделать еще один запрос, и опять использую while($row=mysql_fetch_array()). То есть $row становится другим, и когда идет проверка первого while, получается ерунда. Что делать?    


while($row=mysql_fetch_array($my->sql_res))
{

   $doc_name=$row[0];
   $n=$row[6];
   $e=$row[7];
   
   $my->sql_query="
   SELECT
     load_date,
     email,
     flag
   FROM
     opinion
   WHERE
     flag=\\"$n\\"";

   $my->sql_execute();
   
   while($row=mysql_fetch_array($my->sql_res))
 {
 /* что-то */
 }

}

?>

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
выборка из базы
« Ответ #1 : 06 Мая 2002, 09:49:59 »
Цитировать
и опять использую while($row=mysql_fetch_array()).


используй другое имя переменной. Например $row1 :-))
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« Ответ #2 : 06 Мая 2002, 10:23:26 »
имхо, row тут не причем. тут главное поменять:
Цитировать
$my->sql_res
на другой id результата.
с уважением,
магистр белой магии.

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
выборка из базы
« Ответ #3 : 06 Мая 2002, 10:29:10 »
Dm Как это не при чем???
в двух разных циклах - одна переменная??
надо менять и то и другое.
Имхо
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
выборка из базы
« Ответ #4 : 06 Мая 2002, 10:41:16 »
Ой... да... действительно.
совсем плохой стал :-(((
ДМ прав..., как всегда :-)
спасибо Алиену, что объяснил, где у меня ошибка.... (в ДНК) :-)))))
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн grinder

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 90
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« Ответ #5 : 07 Мая 2002, 00:57:32 »
По совету DM, я изменил id результата, то есть для выполнения запроса я написал аналогичную функцию, но результат возвращался в другую переменную sql_res_1. Может можно как-то сделать проще? А то класс для mysql как-то не очень красиво выглядит...
Вот посмотрите, две одинаковые функции, по сути(sql_execute & sql_execute_1).  
 function sql_connect()
        {
        $this->conn_id=mysql_connect($this->sql_host,$this->sql_login,$this->sql_passwd);
        mysql_select_db($this->sql_database);
        }

  function sql_execute()
        {
        $this->sql_res=mysql_query($this->sql_query,$this->conn_id);
        $this->sql_err=mysql_error();
        }

  function sql_execute_1()
        {
        $this->sql_res_1=mysql_query($this->sql_query,$this->conn_id);
        $this->sql_err_1=mysql_error();
        }

  function sql_close()
        {
        mysql_close($this->conn_id);
        }
}
?>

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« Ответ #6 : 07 Мая 2002, 01:18:22 »
grinder
в первом случае можно записать результат в любую другую переменную: $res = $my->sql_res;
следовательно, нет смысла делать вторую функцию в классе.

PS. а вообще действительно требуется вложенные запросы?
может быть, можно оптимизировать.
с уважением,
магистр белой магии.

Оффлайн grinder

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 90
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« Ответ #7 : 07 Мая 2002, 04:04:12 »
Нельзя оптимизировать, в том то и дело. По крайней мере я не знаю как, хотя уже с этим сталкивался.
Я пробовал  $res = $my->sql_res;, что-то не получилось, поэтому и сделал вторую функцию. Хотя, может быть, это из-за пока еще кривых рук.

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
выборка из базы
« Ответ #8 : 07 Мая 2002, 23:14:42 »
grinder
а первый цикл заменил?
while($row=mysql_fetch_array($res))
плюс $res = $my->sql_res вставляется только один раз (в данном случае) после sql_execute до цикла.
с уважением,
магистр белой магии.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28