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
Форумы портала PHP.SU :: Версия для печати :: 2 цикла с mysql_fetch_object
Форумы портала PHP.SU » » Работа с СУБД » 2 цикла с mysql_fetch_object

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

1. welcometo - 02 Июля, 2011 - 23:27:32 - перейти к сообщению
Здравствуйте, возникла следующая проблема при такой ситуации: делаю 2 запроса в базу

Затем хочу сравнить объект из первого запроса, с объектом из второго запроса
PHP:
скопировать код в буфер обмена
  1. while ( $smb1 = mysql_fetch_object( $Result ) )
  2.     {
  3.         while ( $smb2 = mysql_fetch_object($Result2))
  4.         {
  5.           if ($smb1->id == $smb2->id){
  6.              \\что-то делаем
  7.           }
  8.         }
  9.     }

Но вложенный цикл работает только 1 раз. Такое ощущение, что ф-ия mysql_fetch_object уничтожает содержимое результата запроса $Result2. Помогите, пожалуйста.
2. OrmaJever - 02 Июля, 2011 - 23:33:54 - перейти к сообщению
Почему нельзя сравнить это в запросе к бд?
3. welcometo - 02 Июля, 2011 - 23:44:41 - перейти к сообщению
этот код я привел для примера. там все иначе на самом деле. Объяснять много, врядли кто захочет во все это вникать, поэтому нужна реализация хотя бы вот этого.
4. OrmaJever - 02 Июля, 2011 - 23:47:15 - перейти к сообщению
ну во-первых вы уверены что $Result2 возвращает больше 1 строки?
во-вторых это зависит и от кода в условии, может там есть что-то прерываещее цыкл, например break?
5. Slavenin - 02 Июля, 2011 - 23:57:18 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. while ( $smb1 = mysql_fetch_object( $Result ) )
  2.     {
  3. print_r($smb1);  
  4. //не забываем сбрасывать указатель для  $Result2
  5. mysql_data_seek($Result2, 0);
  6. while ( $smb2 = mysql_fetch_object($Result2))
  7.         {
  8. print_r($smb2);  
  9.           if ($smb1->id == $smb2->id){
  10.              \\что-то делаем
  11.           }
  12.         }
  13.     }

смотрим, что показывает
6. welcometo - 02 Июля, 2011 - 23:57:29 - перейти к сообщению
Да, уверен.
Нет, там ничего подобного нету.
вот код
PHP:
скопировать код в буфер обмена
  1. while ( $oques = mysql_fetch_object( $Result ) )
  2.     {
  3.  
  4.         while ( $answers = mysql_fetch_object($Resultnew))
  5.         {
  6.           if ($oques->ID == $answers->variant_id){
  7.            $isTrueAnswer = 1;
  8.           }
  9.           else {
  10.            $isTrueAnswer = 0;
  11.           }
  12.         //echo $answers->variant_id;
  13.  
  14.         }
  15.         $Return .= "<option><id>".$oques->id."</id><true>".$isTrueAnswer."</true><questionid>".$oques->question_id."</questionid><text>".$oques->options."</text></option>";
  16.     }

(Добавление)
Slavenin ,все также. Влоденный цикл выполняется 1 раз ( не итерация, а весь цикл).
7. Slavenin - 03 Июля, 2011 - 00:08:03 - перейти к сообщению
я первый раз ошибся, должно быть как сейчас, указатель нужно смещать не у $smb2 а у $Result2
8. welcometo - 03 Июля, 2011 - 00:13:09 - перейти к сообщению
Спасибо всем кто принимал участие, и Вам, Slavenin, отдельно) Заработало после добавления команды mysql_data_seek($Result2, 0); Спасибо!)
обязательно почитаю про эту функцию.

 

Powered by ExBB FM 1.0 RC1