在 post 调用 PHP 后多次插入
Multiple insert after post call in PHP
我需要更新从 post 调用插入到 MYSQL 数据库中的相同数据。
这是表单代码:
<form action="salva_debiti.php" method="post">
'; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM rimanenti_mese WHERE Mese = $mese AND Anno = $anno ORDER BY cognome ASC"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo '
<table id="ricambi" style="width: 100%;" border="1">
<tr>
<td id="titolotd">Nome</td>
<td id="titolotd">Cognome</td>
<td id="titolotd">Da incassare pezzi</td>
<td id="titolotd">Da incassare benzina</td>
<td id="titolotd">Residuo '.$mese_scritto.' '.$anno_pr_div.'</td>
</tr>'; while($row = $result->fetch_assoc()) { echo '
<tr>
<td>
<input type="" name="nome[]" value="'.$nome.'">
</td>
<td>
<input type="" name="cognome[]" value="'.$cognome.'">
</td>
<td>
<input type="" name="pezzi[]" value="'.$pezzi.'">
</td>
<td>
<input type="" name="benzina[]" value="'.$benzina.'">
</td>
<td>
<input type="" name="rimanenti[]" value="'.$rimanenti.'" </td>
</tr>
' ; } echo '
<input type="submit" value="Submit">'; echo '</form>';
这是我用来插入数据的代码:
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn - > connect_error) {
die("Connection failed: ".$conn - > connect_error);
}
foreach($_POST['nome'] as $nome) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
//$sql = "UPDATE rimanenti_mese SET Rimanenti='$rimanenti_ins' WHERE Nome='$nome' AND Cognome = '$cognome'";
$sql = "INSERT INTO rimanenti_mese (Nome, Cognome, Mese, Anno, Benzina, Pezzi, Rimanenti)
VALUES('$nome', '$cognome', '09', '2015', 'xxxx', 'fdfdfd', '$rimanenti_ins')
";
}
if ($conn - > query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: ".$sql.
"<br>".$conn - > error;
}
$conn - > close();
问题是它只插入最后一行...
我哪里错了?
将 $conn - > query($sql)
移动到您的 foreach
循环中。
foreach($_POST['nome'] as $nome) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
$sql = ".....";
if ($conn - > query($sql) === TRUE) {
} else {
}
}
因为现在您只执行一个查询,并且在您的 foreach
循环结束后 $sql
包含对最后一项的查询。
更新:
word Array
是数组值的字符串表示。
当您执行 $nome = $_POST['nome']
时,您的 $_POST['nome']
是数组,因此将数组添加到字符串会产生单词 Array
。
因此,您应该在每次迭代中获取数组中的每一项,例如:
$i = 0;
foreach ($_POST['nome'] as $nome) {
$nome = $_POST['nome'][$i];
$cognome = $_POST['cognome'][$i];
$rimanenti_ins = $_POST['rimanenti'][$i];
// sql
// run query
$i++;
}
您在 foreach 完成后调用 $conn -> query($sql)
,这意味着 $sql
仅存储 foreach 循环的最后一个值。
试试这个:
// Create connection
$conn = new mysqli( $servername, $username, $password, $dbname );
// Check connection
if ( $conn->connect_error) {
die("Connection failed: ".$conn -> connect_error);
}
foreach ( $_POST['nome'] as $nome ) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
//$sql = "UPDATE rimanenti_mese SET Rimanenti='$rimanenti_ins' WHERE Nome='$nome' AND Cognome = '$cognome'";
$sql = "INSERT INTO rimanenti_mese (Nome, Cognome, Mese, Anno, Benzina, Pezzi, Rimanenti)
VALUES('$nome', '$cognome', '09', '2015', 'xxxx', 'fdfdfd', '$rimanenti_ins')
";
//put your ->query into the foreach loop
if ($conn -> query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: ".$sql.
"<br>".$conn -> error;
}
}
$conn -> close();
我需要更新从 post 调用插入到 MYSQL 数据库中的相同数据。 这是表单代码:
<form action="salva_debiti.php" method="post">
'; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM rimanenti_mese WHERE Mese = $mese AND Anno = $anno ORDER BY cognome ASC"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo '
<table id="ricambi" style="width: 100%;" border="1">
<tr>
<td id="titolotd">Nome</td>
<td id="titolotd">Cognome</td>
<td id="titolotd">Da incassare pezzi</td>
<td id="titolotd">Da incassare benzina</td>
<td id="titolotd">Residuo '.$mese_scritto.' '.$anno_pr_div.'</td>
</tr>'; while($row = $result->fetch_assoc()) { echo '
<tr>
<td>
<input type="" name="nome[]" value="'.$nome.'">
</td>
<td>
<input type="" name="cognome[]" value="'.$cognome.'">
</td>
<td>
<input type="" name="pezzi[]" value="'.$pezzi.'">
</td>
<td>
<input type="" name="benzina[]" value="'.$benzina.'">
</td>
<td>
<input type="" name="rimanenti[]" value="'.$rimanenti.'" </td>
</tr>
' ; } echo '
<input type="submit" value="Submit">'; echo '</form>';
这是我用来插入数据的代码:
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn - > connect_error) {
die("Connection failed: ".$conn - > connect_error);
}
foreach($_POST['nome'] as $nome) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
//$sql = "UPDATE rimanenti_mese SET Rimanenti='$rimanenti_ins' WHERE Nome='$nome' AND Cognome = '$cognome'";
$sql = "INSERT INTO rimanenti_mese (Nome, Cognome, Mese, Anno, Benzina, Pezzi, Rimanenti)
VALUES('$nome', '$cognome', '09', '2015', 'xxxx', 'fdfdfd', '$rimanenti_ins')
";
}
if ($conn - > query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: ".$sql.
"<br>".$conn - > error;
}
$conn - > close();
问题是它只插入最后一行... 我哪里错了?
将 $conn - > query($sql)
移动到您的 foreach
循环中。
foreach($_POST['nome'] as $nome) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
$sql = ".....";
if ($conn - > query($sql) === TRUE) {
} else {
}
}
因为现在您只执行一个查询,并且在您的 foreach
循环结束后 $sql
包含对最后一项的查询。
更新:
word Array
是数组值的字符串表示。
当您执行 $nome = $_POST['nome']
时,您的 $_POST['nome']
是数组,因此将数组添加到字符串会产生单词 Array
。
因此,您应该在每次迭代中获取数组中的每一项,例如:
$i = 0;
foreach ($_POST['nome'] as $nome) {
$nome = $_POST['nome'][$i];
$cognome = $_POST['cognome'][$i];
$rimanenti_ins = $_POST['rimanenti'][$i];
// sql
// run query
$i++;
}
您在 foreach 完成后调用 $conn -> query($sql)
,这意味着 $sql
仅存储 foreach 循环的最后一个值。
试试这个:
// Create connection
$conn = new mysqli( $servername, $username, $password, $dbname );
// Check connection
if ( $conn->connect_error) {
die("Connection failed: ".$conn -> connect_error);
}
foreach ( $_POST['nome'] as $nome ) {
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$rimanenti_ins = $_POST['rimanenti'];
//$sql = "UPDATE rimanenti_mese SET Rimanenti='$rimanenti_ins' WHERE Nome='$nome' AND Cognome = '$cognome'";
$sql = "INSERT INTO rimanenti_mese (Nome, Cognome, Mese, Anno, Benzina, Pezzi, Rimanenti)
VALUES('$nome', '$cognome', '09', '2015', 'xxxx', 'fdfdfd', '$rimanenti_ins')
";
//put your ->query into the foreach loop
if ($conn -> query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: ".$sql.
"<br>".$conn -> error;
}
}
$conn -> close();