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

标签 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 个。

最佳答案

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

因此,请使用@status, @message 而不是$status, $message。另外,您可能希望使用绑定(bind)来传递其他值。

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

关于php - 在 Laravel 中使用带有 OUT 参数的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877656/

相关文章:

php - 在 PHP 中提取 ZIP 文件的子文件夹

php - 如何从整个网站中提取所有网址,而不仅仅是从给定的链接中

php - 重置密码时避免出现 "auto login"

c# - 将 GridView 和一些文本下载到 ASP.NET 网站的 Excel 中

mysql - 将不同的列分组为一行

php - Laravel 迁移表字段的类型更改

php - 如何在 SQL 中搜索列中的精确字符串

mysql - 将所有值设置为零(单行中的一个值除外)

php - 如何更改 select2 上元素的文本颜色

php - 用于文本自然语言处理的 Laravel 数据库设计