如何在Laravel中使用参数调用执行过程查询

时间:2019-06-18 11:31:53

标签: mysql laravel procedure

我正在尝试在laravel中执行以下代码...

$sql = "SET @p0='$p_id'; CALL `rating_avg`(@p0);";
$pp = mysqli_query($link,$sql);
if($pp == false)die("QUERY DIDN'T EXECUTE");

但总是显示“查询无法执行”

我正在使用Laravel做一个Web项目。我的项目名称是研究论文管理系统。我们的课程老师禁止我们使用laravel模型,并告诉我们以以下方式执行任何查询。  $ sql =“某些查询”; mysqli($ database_connect,$ sql);

这就是为什么我要按照老师的条款和条件做以下事情...

$sql = "SET @p0='$p_id'; CALL `rating_avg`(@p0);";
$pp = mysqli_query($link,$sql);
if($pp == false)die("QUERY DIDN'T EXECUTE");

这里“ rating_avg”是一个过程。我已经在phpMyadmin数据库中手动创建了它。创建时,我发现以下查询...

CREATE PROCEDURE `rating_avg`(IN `pid` INT) DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER select avg(reviewer_given_rating) AS v from paper_has_reviews where paper_id=pid;

一切都很好。我只是不知道如何运行查询 $ sql =“ SET @ p0 ='$ p_id'; CALL rating_avg(@ p0);”;

mysqli_query()在这里不起作用。

1 个答案:

答案 0 :(得分:0)

为此尝试使用DB::statement()

// Splitting it into separate statements makes for better code structure.
DB::statement("SET @p0='$p_id'");
DB::statement("CALL rating_avg(@p0)");

但是,这需要您在Laravel应用程序中正确配置数据库连接。我建议您访问official documentation on the matter