我试过像这样制作一个存储过程:
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/