如何使用返回值的存储过程从MySQL返回总记录数

时间:2011-08-04 13:10:16

标签: php mysql stored-procedures

delimiter // 
create procedure sp_AttendReportCountWorkouts(OUT cnt INT) 
  begin select count(*) into cnt from workout_details; 
end;

我在MySQL中创建了上面的存储过程,我正在尝试记录记录,但是我无法获得所需的结果。以下是我的PHP页面上的实际代码。

$link = mysqli_connect('localhost', 'root', '', 'icoachswim_sp');
if (!$link)
{
    printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());
    exit;
}

if ($count = mysqli_query($link,"call sp_AttendReportCountWorkouts()"))
{

}

2 个答案:

答案 0 :(得分:1)

在您的示例中,$ count只是对MySQL结果的引用。 以下是如何处理该引用并获得实际结果的想法。

if($result = mysqli_query($link,"call sp_AttendReportCountWorkouts()"))
{
 $row = mysqli_fetch_array($result);
 $count = $row[0];
}

更新:这只是一个例子,假设存储过程没有使用out参数:

create procedure sp_AttendReportCountWorkouts() 
begin
 select count(*) from workout_details; 
end;

使用out参数必须是multi_query,就像其他答案节目或两个连续调用一样:

$spResult = mysqli_query($link,"call sp_AttendReportCountWorkouts(@cnt)"));
// process $spResult here before executing next query
$cntResult = mysqli_query($link,"select @cnt"));

答案 1 :(得分:0)

以下是解决输出变量问题的上一个问题:

PHP + MySql + Stored Procedures, how do I get access an "out" value?