mysql - 如何在laravel中执行带有参数调用的过程的查询

标签 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");

但总是显示QUERY DIDN'T EXECUTE

我正在使用 Laravel 做一个网络项目。我的项目名称是研究论文管理系统。我们的类(class)老师禁止我们使用 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() 在这里不起作用。

最佳答案

尝试使用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 .

关于mysql - 如何在laravel中执行带有参数调用的过程的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56648157/

相关文章:

mysql - MySQL 查询的成功率

mysql 替换IP地址中的最后一组数字

mysql - 如何同时更新多个MySQL数据库?

php - Laravel 数组验证

Python 列表括号删除

java - 如何在Java中注册Raw类型的OutParameter

mysql - mysql 中存储大约 4.5 亿行给定数据的最佳数据库结构是什么

php - Laravel 5.1 验证规则 alpha 不能带空格

mysql - 使用 SELECT INTO 后,mariaDB (MySQL) 仍然收到 "Not allowed to return a result set from a function"的错误 1415

php - 关系 hasMany 上的 withCount()