Как выполнить запрос процедуры с вызовом параметра в laravel - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь выполнить следующий код в laravel ...

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

Но всегда показывает, что QUERY НЕ ВЫПОЛНЯЛ

Я занимаюсь веб-проектом с использованием Laravel. Мой проект называется «Система управления исследовательскими работами». Наш преподаватель курса запретил нам использовать модель 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 голосов
/ 18 июня 2019

Попробуйте использовать 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. Я предлагаю вам посетить официальную документацию по этому вопросу .

...