更新PHP中的多个SQL行1提交
问题描述:
在此先感谢,我真的坚持用SQL更新多行SQL。我尝试了多次迭代,似乎只是错过了一些很简单的东西,所以任何帮助我都会很感激。更新PHP中的多个SQL行1提交
基本上我有一个大的前端表格显示表单中的物品的当前库存,这是完美的,正确显示所有金额,我有一个提交按钮在底部,理想情况下想更新所做的任何更改点击一下。我知道我错过了一些相当明显的东西,但是我无法理解它。
这是表单显示代码:
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM stock";
$result = mysqli_query($conn,$sql)or die(mysqli_error());
echo "<div class='table-striped'><form action='update_stock.php' action='post'><table class='table>'";
echo "<tr>
<th>Sizing</th>
<th>Black Active</th>
<th>Nude Active</th>
<th>Blue Active</th>
<th>Pink Active</th>
<th>Purple Active</th>
<th>Black Vest</th>
<th>Nude Vest</th>
<th>Pink Vest</th>
<th>Blue Vest</th>
<th>Minnie</th>
<th>Skulls</th>
<th>Batman</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
$id = $row['sizing'];
$ba = $row['BlackActive'];
$na = $row['BeigeActive'];
$blua = $row['BlueActive'];
$pina = $row['PinkActive'];
$pura = $row['PurpleActive'];
$bv = $row['BlackVest'];
$nv = $row['BeigeVest'];
$pv = $row['PinkVest'];
$bluv = $row['BlueVest'];
$min = $row['Minnie'];
$sku = $row['Skulls'];
$bat = $row['Batman'];
echo "<tr>
<td style='padding:10px;font-weight:bold;'><input class='form-control' type='hidden' name='id[]' value=".$id." />".$id."</td>
<td style='padding:10px;'><input class='form-control' type='text' name='ba[]' value=".$ba." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='na[]' value=".$na." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='blua[]' value=".$blua." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='pina[]' value=".$pina." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='pura[]' value=".$pura." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='bv[]' value=".$bv." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='nv[]' value=".$nv." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='pv[]' value=".$pv." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='bluv[]' value=".$bluv." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='min[]' value=".$min." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='sku[]' value=".$sku." /></td>
<td style='padding:10px;'><input class='form-control' type='text' name='bat[]' value=".$bat." /></td>
</tr>";
}
echo "</table><input class='btn btn-md btn-danger btn-block searchbut' type='submit' value='Update'></form></div>";
这里是在update_stock目前的尝试(不工作):
// Sanatize the incoming!
$ba = $_POST['ba'];
$na = $_POST['na'];
$blua = $_POST['blua'];
$pina = $_POST['pina'];
$pura = $_POST['pura'];
$bv = $_POST['bv'];
$nv = $_POST['nv'];
$pv = $_POST['pv'];
$bluv = $_POST['bluv'];
$sku = $_POST['sku'];
$bat = $_POST['bat'];
$min = $_POST['pina'];
$id = $_POST['id'];
$conn = mysqli_connect($servername, $username, $password, $dbname);
$stmt = mysqli_prepare($conn,
"UPDATE stock SET
BlackActive=?,
BeigeActive=?,
BlueActive=?,
PinkActive=?,
PurpleActive=?,
BlackVest=?,
BeigeVest=?,
PinkVest=?,
BlueVest=?,
Skulls=?,
Minnie=?,
Batman=?
WHERE sizing=?") or die(mysqli_error($conn));
mysqli_stmt_bind_param($stmt, 'sssssssssssss',
$ba, $na, $blua, $pina, $pura, $bv, $nv, $pv, $bluv, $sku, $min, $bat, $id);
mysqli_stmt_execute($stmt);
//echo "update successful! YAY!<br />";
echo "update successful! YAY!<br />";
//close connection to db
mysqli_close($conn);
正如你可能会看到,这是一个简单的有足够的事情要做,我根本就无法摆脱困境。任何帮助,指针,实例或修复将十分赞赏奖励;)
感谢
答
请使用: 只需要循环您的文章数据这样
foreach($_POST['ba'] as $ba){
// Sanatize the incoming!
//$ba = $_POST['ba']; no need to use it again
$na = $_POST['na'];
$blua = $_POST['blua'];
$pina = $_POST['pina'];
$pura = $_POST['pura'];
$bv = $_POST['bv'];
$nv = $_POST['nv'];
$pv = $_POST['pv'];
$bluv = $_POST['bluv'];
$sku = $_POST['sku'];
$bat = $_POST['bat'];
$min = $_POST['pina'];
$id = $_POST['id'];
$conn = mysqli_connect($servername, $username, $password, $dbname);
$stmt = mysqli_prepare($conn,
"UPDATE stock SET
BlackActive=?,
BeigeActive=?,
BlueActive=?,
PinkActive=?,
PurpleActive=?,
BlackVest=?,
BeigeVest=?,
PinkVest=?,
BlueVest=?,
Skulls=?,
Minnie=?,
Batman=?
WHERE sizing=?") or die(mysqli_error($conn));
mysqli_stmt_bind_param($stmt, 'sssssssssssss',
$ba, $na, $blua, $pina, $pura, $bv, $nv, $pv, $bluv, $sku, $min, $bat, $id);
mysqli_stmt_execute($stmt);
//echo "update successful! YAY!<br />";
echo "update successful! YAY!<br />";
//close connection to db
}
mysqli_close($conn);
我真的不理解你的答案,因为所有做的事情都是对一种价值而不是其他方面。混乱!对不起,感谢您的帮助! 编辑:我只是试过它,它不工作,对不起! –
您的一个帖子值“$ _POST ['ba']”为我们提供了您更新的帖子数量。使用我的代码后出现了什么错误。 –
我认为你误解了这个问题,$ ba $ na $ blua等是通过发送的值,那么为什么要对其中的一个进行任何操作? &ba没有被用作钥匙或ID,我真的很困惑你的答案!所以很抱歉,如果这个问题复杂化... –