Процедура для отбора дерева.
Код:
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);