php - 使用存储过程从数据库中选择?

标签 php mysql stored-procedures

我试过像这样制作一个存储过程:

DELIMITER $$
DROP PROCEDURE IF EXISTS get_userStatUser $$
CREATE PROCEDURE get_UserStatUser
(
IN userId INT,
OUT Played INT,
OUT Win INT,
OUT Points INT
)
BEGIN
SELECT played, win, points
INTO Played, Win, Points
FROM nf_users
WHERE id = userId;
END $$
DELIMITER ;

然后我尝试像这样从中获取数据:

$sql = mysqli_query($connect,"CALL get_userStatUser()") or die("Query fail: " . mysqli_error());
$row = mysqli_fetch_array($sql);

$played = $row['Played'];
$win = $row['Win'];
$points = $row['Points'];

但是有一点不对。我是存储过程的新手,看不出哪里出错了?我收到“查询失败:”错误中没有任何内容?

感谢任何帮助并提前致谢:-)

最佳答案

存储过程需要4个参数

IN userId INT,
OUT Played INT,
OUT Win INT,
OUT Points INT

鉴于您的 PHP 调用存储过程的方式,您需要重新定义以下内容:

DELIMITER $$
DROP PROCEDURE IF EXISTS get_userStatUser $$
CREATE PROCEDURE get_UserStatUser
(
IN userId INT
)
BEGIN
SELECT played, win, points
FROM nf_users
WHERE id = userId;
END $$
DELIMITER ;

你的PHP

$given_userid = 372987;
$sql = mysqli_query($connect,"CALL get_userStatUser($given_userid)") or die("Query fail: " . mysqli_error());
$row = mysqli_fetch_array($sql);

$played = $row['played'];
$win = $row['win'];
$points = $row['points'];

试一试!!!

关于php - 使用存储过程从数据库中选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148055/

相关文章:

php - 照片上传在本地主机上工作但在服务器上不起作用?

PHP 和 MySQL,与 2 个键关联的数组

Mysql 左外连接不包括左表中的所有记录

oracle - 使用 SqlAlchemy 执行返回 REF CURSOR 的 Oracle 存储过程

mysql - 正则表达式 : string must contain a-z and A-Z and 0-9

php - 如何使用 PSR-7 响应?

php - Laravel 4 嵌套 Controller 和路由

.net - 在 Visual Studio 中检索使用临时表的存储过程的字段架构

mysql - 为什么选择 group by 上的所有列不会导致错误?

java - 如何从mysql中的表中选择第3行?