我目前正在尝试通过PHP表单更新数据库。首先,我从表单中的数据库中获取所有信息,然后尝试更新该表单中的详细信息以反映数据库。
我可以成功地从表单中获取数据库中的所有详细信息,但遗憾的是因为这个原因没有更新。
以下是在100%工作的表单中从DB检索信息的代码:
include_once 'db_connect.php';
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<form id=updateVehicle action='' method=post";
echo "<div id='vehicleDescription'>";
echo "<div>";
echo "<label for=vin>VIN</label>";
echo "<input type=text id=vin name=vin minlength=17 maxlength=17 placeholder=e.g. BMW1234567890ABCD value=" . $row['vin'] . " />";
echo "<br/>";
echo "</div>";
echo "<div>";
echo "<label for=make>Make</label>";
echo "<input type=text id=make name=make minlength=3 maxlength=13 placeholder=e.g. BMW value=" . $row['make'] . " />";
echo "<br/>";
echo "</div>";
echo "<div>";
echo "<label for=model>Model</label>";
echo "<input type=text id=model name=model minlength=2 maxlength=15 placeholder=e.g. 530D value=" . $row['model'] . " />";
echo "<br/>";
echo "</div>";
echo "<div>";
echo "<input type=text name=id value=" . $row['id'] . " />";
echo "</div>";
echo "<span><?php echo $errorMessage;?></span>";
echo "</div> <!--End of vehicleDescription div-->";
echo "<input type='submit' class='submit' value='Update Ads' />";
echo "</form>";
}
}
该操作为空,因为它提交给自己,我尝试使用“echo htmlspecialchars($ _ SERVER [”PHP_SELF“]);”但它不起作用,所以我把它留了出来。
以下是处理更新的代码:
if(isset($_POST['vin'], $_POST['make'], $_POST['model'])) {
$vin = filter_input(INPUT_POST, 'vin', FILTER_SANITIZE_STRING);
$make = filter_input(INPUT_POST, 'make', FILTER_SANITIZE_STRING);
$model = filter_input(INPUT_POST, 'model', FILTER_SANITIZE_STRING);
$id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT);
if($insert_stmt = $mysqli->prepare("UPDATE vehicles SET (vin=?, make=?, model=? WHERE id=? ")) {
$insert_stmt->bind_param("sssi", $vin, $make, $model, $id);
if(!$insert_stmt->execute()) {
header('Location: ../error.php?err=Registration failure: UPDATE');
$mysqli->close();
}
}
header('Location: ../includes/register_success.php');
$mysqli->close();
}
由于某些未知原因,它根本不更新数据库。 'db_connect.php'100%正常工作,因为我将其用于其他数据库查询。
如果你能指出我正确的方向,我真的很感激。
谢谢!
答案 0 :(得分:1)
执行更新查询时是否收到错误?我可以看到一个额外的(在 SET 之后:
UPDATE vehicles SET (vin=?, make=?, model=? WHERE id=?
这会导致查询失败,这是数据库中未更新内容的一个很好的理由。