Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando PHP “insert multiple” para inserir todas as 4 linhas ao mesmo tempo


altere os nomes dos seus controles para que eles Postem como Arrays
<input type="text" name="teamname[G1]">
<input type="text" name="teamname[G2]">

é por isso que quando você usa $varTname = $_POST['teamname']; $varTname é um array e cada um dos 4 valores de teamname são definidos como $varTname['G#'] onde # corresponde ao número que você definiu para esse grupo de campos de entrada.

em seguida, use um loop for para obter os dados e executar sua consulta, algo como abaixo. enquanto você faz isso, você também pode corrigir sua vulnerabilidade de injeção de SQL. você também pode querer um pouco mais de saneamento para os dados apenas para ter certeza
$varTname = $_POST['teamname'];
$varCity = $_POST['city'];
$varBplayer = $_POST['bestplayer'];
$varYearformed = $_POST['yearformed'];
$varWebsite = $_POST['website'];

$stmt = $mysqli->prepare('INSERT INTO Teams (teamname, city, bestplayer, yearformed, website) VALUES (?,?,?,?,?,?)');
$varTname1Bind = "";
$varTnameBind = "";
$varCityBind = "";
$varBplayerBind = "";
$varWebsiteBind = "";

 // assuming they are all strings, adjust where needed
 $stmt->bind_param('sssssss',
    $varTname1Bind,
    $varTnameBind,
    $varCityBind,
    $varBplayerBind,
    $varYearformedBind,
    $varWebsiteBind);

for($i = 1; i < 5; $i++)
{
    $varTname1Bind = $varTname['G'.$i];
    $varTnameBind = $varTname['G'.$i];
    $varCityBind = $varCity['G'.$i];
    $varBplayerBind = $varBplayer['G'.$i];
    $varYearformedBind = $varYearformed['G'.$i];
    $varWebsiteBind = $varWebsite['G'.$i];

    $stmt->execute();
}

irá poupar-lhe a quantidade de código que precisa de fazer