【发布时间】:2020-04-12 06:51:28
【问题描述】:
我创建了一个包含 10 个输入的表单,它可以从数据库中获取默认值。
<form class="updatePrices" action="includes\updateprices.inc.php" method="POST">
<?php
$sql = "SELECT * FROM price ";
$results = mysqli_query($conn, $sql) or die();
$name = "90";
while($row = mysqli_fetch_assoc($results)) {
echo " " . $row["name"]. " <input type='text' name=".$row['id']." value={$row['value']}><br>";
echo " <input type='hidden' name=".$name." value={$row['id']}>";
$name++;
}
echo '<button type="submit" name="update-submit">Ok</button>';
?>
</form>
现在我希望表单根据新的输入值更新数据库。
<?php
require 'dbh.inc.php';
$id = [$_POST['90'],$_POST['91'],$_POST['92'],$_POST['93'],$_POST['94'],$_POST['95'],$_POST['96'],$_POST['97'],$_POST['98'],$_POST['99']];
$price = [$_POST['1'],$_POST['2'],$_POST['3'],$_POST['4'],$_POST['5'],$_POST['6'],$_POST['7'],$_POST['8'],$_POST['9'],$_POST['10']];
$sql= "UPDATE price SET value= ? WHERE id = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../manage.price.php?error=sqlerror");
exit();
}else {
mysqli_stmt_bind_param($stmt, "ii", $price, $id);
for($i=0;$i<10;$i++){
$id[$i];
$price[$i];
mysqli_stmt_execute($stmt);
}
header("Location: ../manage.price.php?success");
exit();
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
但由于某种原因,我的代码仅将第一个值更新为 1(与输入值无关)
【问题讨论】:
-
您将参数绑定到您定义的数组,然后在您的 for 循环中,您只需执行语句。
$id[$i]; $price[$i];对这些变量值什么都不做。 -
你用数组本身而不是单个值调用
mysqli_stmt_bind_param。 -
谢谢@NigelRen
标签: php mysql forms mysqli sql-update