是否可以在存储过程参数中传递多个输入值?

时间:2019-11-10 16:44:18

标签: php mysql sql

我正在研究一个梦幻棒球优化器,我有一个存储过程,当用户选择球员时,它将返回可能的最佳球员,但是问题是,sp一次只对一个球员这样做。我想知道sp是否有办法一次最多可以让9个玩家使用。 Visual Reference

这是存储过程的代码:

DELIMITER $$
CREATE DEFINER=`u998875936_chri`@`%` PROCEDURE `Optimizer9`(
PlayerName varchar(30), 
PlayerPosition varchar(2),
PlayerSalary int,
PlayerFPPG Numeric (20,17),
CapRemaining int,
OUT ReturnPlayerName varchar(30),
OUT ReturnCap int
)
BEGIN

Declare Count int;
Declare lclSal int;
Declare lclPlayerName varchar(30);
Declare lclReturnPlayerName varchar(30);
Declare lclCap int;

Set lclPlayerName='';
Set lclReturnPlayerName='';
Set lclSal=0;
Set lclCap = CapRemaining;
Set Count=0;



create temporary Table IF NOT EXISTS TempPlayer9(
Player varchar(30),
Pos varchar(2),
Sal int,
Points Numeric (20,17)
);


Insert into TempPlayer9 (Player,Pos,Sal,Points)

    SELECT Nickname
      ,Position
      ,Salary
      ,FPPG
  FROM playerList
  WHERE POSITION = PlayerPosition
   and FPPG > PlayerFPPG
       order by FPPG DESC; 

Set Count=(Select Count(*) from TempPlayer9);

While Count > 0
     DO
       Set lclPlayerName=(Select Player from TempPlayer9 LIMIT 1);
       Set lclSal=(Select Sal from TempPlayer9 LIMIT 1);
       IF (lclsal- PlayerSalary) < lclCap
      THEN         
            Set lclCap = lclCap - (lclSal- PlayerSalary);
            Set lclReturnPlayerName = lclPlayerName;
            Set Count=0;

        DELETE from TempPlayer9 Where Player = lclPlayerName;
        Set Count=Count-1       ;
        END IF;
        END WHILE;
Set ReturnPlayerName = lclReturnPlayerName;  
Set ReturnCap = lclCap;
END$$
DELIMITER ;

PHP代码:

<?php 

$remain=35000; 
$player= $_POST['player'];
$pos= $_POST['pos'];
$sal= $_POST['sal'];
$points= $_POST['fppg'];
$cap= $remain-$sal; 


$sql = $mysqli->query("call Optimizer11('$player', '$pos','$sal' , '$points', '$cap', @ReturnPlayerName, @ReturnCap)");
$results = $mysqli->query ("select @ReturnPlayerName as Player,@ReturnCap AS SalRemaining");
$rows = mysqli_fetch_array($results);

print_r($rows);

?>

0 个答案:

没有答案