从存储过程中检索id以调用嵌套过程 - PHP和MYSQL

时间:2015-12-08 19:05:48

标签: php mysql stored-procedures

我需要调用第一个过程(CrushProps),然后通过从第一个过程中的行中调用第二个过程(CrushOutcomes)并使用值(PropId)来循环遍历每一行(并返回新行中的所有行)过程)。

我看过这个问题,但不能让它适合我: calling nested stored procedure from php

这是两个存储过程:

DROP PROCEDURE IF EXISTS CrushProps $$
create procedure CrushProps(IN crID int)
begin

select props.PropText, props.Prop_Id 
from props inner join crush_props on props.Prop_Id = crush_props.PropId
where crush_props.CrushId = crID;
end $$

DROP PROCEDURE IF EXISTS CrushOutcomes $$
create procedure CrushOutcomes(IN prID int)
begin

select prop_outcomes.OutcomeText, prop_outcomes.OutcomePoints  
from prop_outcomes inner join crush_props ON prop_outcomes.PropId = crush_props.PropId
WHERE prop_outcomes.PropId = prID;

end $$

成为PHP和MySQL的新手我尝试了许多不同的变化而没有任何运气。下面的代码按顺序运行两个过程,并从第一行返回所有行,但从第二行返回只有一行(并且在完整结果之后 - 而不是在每行之后)。

我无法弄清楚如何让它循环通过第一个程序的每一行。

$result = mysqli_query($con,"CALL CrushProps('$crushid')") or die("Query fail: " . mysqli_error());

if($result->num_rows > 0) 
{
  while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
    {
   $prptxt = $row[PropText];
   $prpid = $row[Prop_Id];

    echo $prptxt . "<br/>"; 
    }

            $result->close();
            $con->next_result();
}


$result2 = mysqli_query($con,"CALL CrushOutcomes('$prpid')") or die("Query fail: " . mysqli_error());

if($result2->num_rows > 0) 
{
    while($row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC))
    {
   $outtxt = $row2[OutcomeText];
   $outpts = $row[OutcomePoints];

    echo $outtxt . "<br/>"; 

    }
}    

0 个答案:

没有答案