【发布时间】:2019-02-08 15:46:28
【问题描述】:
我现在在php中调用一个存储过程,该过程的第三个参数是一个OUT参数所以它应该得到输出
当我运行这个时:
function createNameRecord($firstName,$lastName){
try{
$sql = "CALL schema.CREATE_RECORD(?,?,?)";
$values = [$firstName,$lastName,$returnID];
return DB::connection('odbc')->select($sql,$values);
dd($returnID);
}catch(Exception $e){
return false;
}
}
程序正常运行并重新加载页面,当我检查数据库时,记录已成功创建。但是,我需要作为创建记录 ID 的输出变量,并且我需要将其返回给随后运行的函数。
因此,既然它运行,成功创建记录并重新加载页面,那么我如何转储输出 $returnID 以便我可以验证它是否存储了我返回的 ID?上面的转储和死机不起作用,可能是因为页面重新加载。
验证退货 ID 的最佳方法是什么?
【问题讨论】:
-
如果您只是在调试,请阻止重定向,并回显变量/退出。如果您需要在页面加载之间保留该字段,请将其存储在会话中。见Flash Messages
-
您在到达 dd($returnID); 之前返回把那一行放在前面,或者把第 5 行的 return 去掉,放在第 6 行的开头。
-
@Millar248 我必须在获取返回 ID 之前执行 proc,所以你是说删除“return”并将其放在转储/死之前?
-
我只是说,据我所知,return 结束了一个函数。我不知道“dd()”在做什么,但是如果您的代码正在运行,并且您希望 dd 发送回数据,我怀疑它会在调用 return 后这样做。如果是我,我会这样做:尝试 { //... DB::connection('odbc')->select($sql,$values); dd($returnID); }catch(Exception $e){ return false; } 返回真;
-
@FrankerZ 命中此函数的控制器最后使用 return back() 并且表单正在使用提交按钮提交。能否举例说明如何执行此过程并在成功后将 ID 闪烁在消息中?