在Laravel中使用带有OUT参数的存储过程

时间:2016-04-26 23:34:38

标签: php mysql laravel stored-procedures laravel-5

我在调用具有两个OUT参数的存储过程时遇到问题。我无法访问它们。

这是我程序的第一行:

PROCEDURE `validate_reservation`(IN people INT, IN r_date DATETIME,IN place_id INT,IN max_people INT,IN more_people TINYINT(1),OUT r_status CHAR(20),OUT message CHAR(100))

以下是我从Laravel 5中称呼它的方式:

DB::statement("call validate_reservation(4,'2016-04-26 20:30',1,10,1,$status,$message)");

我不知道是否必须传递两个空变量,它们将转换输出的值,或者如果这是语句的返回值。

如果我传递两个空变量,Laravel告诉我它们没有被定义。如果我没有通过它们,Laravel告诉我程序正在等待7个参数而不是5个。

2 个答案:

答案 0 :(得分:3)

使用OUT参数,您可以处理MySQL变量 - 这些变量以@为前缀。

因此,请使用@status, @message代替$status, $message。此外,您可能希望使用绑定来传递其他值。

在任何情况下,这些都不会填充PHP变量。如果你想用PHP获取它们,你需要选择它们,例如SELECT @status, @message使用DB::select

答案 1 :(得分:0)

这种方式对我有用:

DB::select("call validate_reservation(4,'2016-04-26 20:30',1,10,1,@status,@message)");

$results = DB::select('select @status as status, @message as message ');

return dd($results[0]->message);