Показать сообщение отдельно
Старый 28.08.2009, 19:04   #9
Wizard2007
Постоялец
 
Пол:Мужской
Регистрация: 19.10.2007
Сообщений: 272
Репутация: 4
По умолчанию Re: My SQL Реккурсия

Процедура для отбора дерева.
Код:
CREATE PROCEDURE `up_SelectTree`(IN root BIGINT)
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
  declare Str text default '';
  set @Parent_ID = root;
  set Str = CONCAT(STR, IFNULL(@parent_id,''));
  set @Query = CONCAT(
    'Select * From ',
    '  `tbl_Tree` Where Parent_ID in (', @Parent_ID ,') order by id'
  );
  PREPARE select_sub_tree From @Query;
  EXECUTE select_sub_tree;
  DROP PREPARE select_sub_tree;
  set @HTML_TEXT = '';

  repeat
    set @Query = CONCAT(
      'Select GROUP_CONCAT(id) into @Parent_ID From ',
      '  `tbl_Tree` Where Parent_ID in (', @Parent_ID ,') order by id'
    );
    PREPARE select_sub_tree From @Query;
    EXECUTE select_sub_tree;
    DROP PREPARE select_sub_tree;

    if NOT @Parent_ID IS NULL Then
      set @Query = CONCAT(
        'Select * From ',
        '  `tbl_Tree` Where Parent_ID in (', @Parent_ID ,') order by id'
      );
      PREPARE select_sub_tree From @Query;
      EXECUTE select_sub_tree;
      DROP PREPARE select_sub_tree;
    end if;
    set Str = CONCAT(STR,',',  IFNULL(@Parent_ID,''));
  until @Parent_ID is null end REPEAT;
END;
Вызываю ее кодом из php, только выволиться на страницу только заголовок, и следубщий заним уровень дерева, а там их еще два. Почему не выводятся все остальные уровни?
Код:
$UserName = 'user';
  $Password = 'password';
  $DB = 'DB';
  $Server = 'localhost';
  $LinkToDB = mysqli_init(); 
  mysqli_real_connect($LinkToDB, $Server, $UserName, $Password) or die('Cannot connect to $Server, DB = $DB');
  $Query = 'Call up_SelectTree(52)'; 
  mysqli_select_db($LinkToDB,$DB);
  $res = mysqli_real_query($LinkToDB,$Query)or die (mysqli_error($LinkToDB));  
  if ($res)
  { 
   if ($result2 = mysqli_store_result($LinkToDB))
   {
     while ($row = mysqli_fetch_assoc($result2))
     {
       foreach ($row as $key => $rValue)
       	{
       	  Echo "key = $key value = $rValue<BR>";
       	}
     }
   }
  }
  mysqli_close($LinkToDB);
Wizard2007 вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.02045 секунды с 10 запросами