1

私は次のようなストアドプロシージャを作成しようとしました:

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'];

しかし、何かが正しくありません。ストアドプロシージャを初めて使用しましたが、どこが間違っているのかわかりませんか?エラーに何も表示されずに「Queryfail:」が表示されますか?

どんな助けでも感謝され、前もって感謝します:-)

4

1 に答える 1

1

ストアドプロシージャには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'];

試してみる !!!

于 2013-01-03T22:14:21.373 に答える