数据库不会更新 - 通过MySQLi的PHP表单

时间:2015-07-12 16:55:21

标签: php mysql

我目前正在尝试通过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%正常工作,因为我将其用于其他数据库查询。

如果你能指出我正确的方向,我真的很感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

执行更新查询时是否收到错误?我可以看到一个额外的 SET 之后:

UPDATE vehicles SET (vin=?, make=?, model=? WHERE id=? 

这会导致查询失败,这是数据库中未更新内容的一个很好的理由。