我现在正在用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的最佳方法是什么?
答案 0 :(得分:2)
我是该社区的新手,并不完全知道如何指导您,但是如果您尝试mysqli_real_query()并按照文档所述检索结果,该怎么办:
对数据库执行单个查询,其结果可以是 使用mysqli_store_result()检索或存储 mysqli_use_result()函数。
答案 1 :(得分:1)
一旦您的函数看到return
,该函数将在该行之后不再执行任何代码。在这种情况下,dd($returnID);
将永远不会执行。如果您只是调试,只需删除return
,然后让dd()
输出/死:
function createNameRecord($firstName,$lastName){
try{
$sql = "CALL schema.CREATE_RECORD(?,?,?)";
$values = [$firstName,$lastName,$returnID];
DB::connection('odbc')->select($sql,$values);
dd($returnID);
}catch(Exception $e){
return false;
}
}
在这种情况下,您不必关心返回值(无论调用什么createNameRecord
),因为您只希望脚本结束/死亡。
如果仍在重新加载页面,则可能是您的catch语句正在执行,因此您也应该对其进行调试:
function createNameRecord($firstName,$lastName){
try{
$sql = "CALL schema.CREATE_RECORD(?,?,?)";
$values = [$firstName,$lastName,$returnID];
DB::connection('odbc')->select($sql,$values);
dd($returnID);
}catch(Exception $e){
dd($e);
}
}