次のようなストアド プロシージャを作成しました。
DELIMITER //
DROP PROCEDURE IF EXISTS `get_games_menu` //
CREATE PROCEDURE `get_games_menu`
(
IN currplayer INT,
OUT gameid INT,
OUT lastdraw INT,
OUT playertiles TEXT,
OUT oppnation INT,
OUT oppname VARCHAR(100),
OUT fdraw INT,
OUT playerpoints INT,
OUT infopop INT,
OUT oppTiles TEXT,
OUT tabletiles TEXT,
OUT playerturn INT,
OUT newtabletiles TEXT,
OUT profileimg VARCHAR(255)
)
BEGIN
SELECT
gp.fk_game_id
, gp.player_tiles
, gp.infoPop
, gp.first_draw
, gp.player_points
, g.table_tiles
, g.new_tiles
, gp2.last_draw_type
, gp2.player_turn
, gp2.player_tiles
, u.country
, u.username
, u.profileimg
INTO
gameid
, playertiles
, infopop
, fdraw
, playerpoints
, tabletiles
, newtabletiles
, lastdraw
, playerturn
, oppTiles
, oppnation
, oppname
, profileimg
FROM nf_gameplayer gp
INNER JOIN nf_games g
ON gp.fk_game_id = g.game_id
INNER JOIN nf_gameplayer gp2
ON gp.fk_game_id = gp2.fk_game_id
AND gp.fk_player_id != gp2.fk_player_id
INNER JOIN nf_users u
ON gp2.fk_player_id = u.id
WHERE gp.fk_player_id = currplayer
AND g.invite=0
AND g.deleteby != currplayer
ORDER BY g.lastdraw;
END //
DELIMITER ;
私はそれを次のように呼び出そうとしています:
$mysqli = new mysqli('localhost', 'root', '', 'mytest');
$rs = $mysqli->query( 'CALL get_games_menu(1, @gameid,@playertiles,@infopop,@fdraw,@playerpoints,@tabletiles,@newtabletiles,@lastdraw,@playerturn,@opptiles,@oppnation,@oppname,@profileimg)' );
$rs = $mysqli->query( 'SELECT @gameid,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL');
while($row = $rs->fetch_object())
{
echo $row['gameid']-'<br>';
}
しかし、私は記録を取得していません。通常のmysqlを実行すると、9つのレコードが取得されます...
私は何を間違っていますか。(ストアド プロシージャの新機能)。
前もって感謝します ;-)