通过Button使用PHP提交更新SQL数据

时间:2018-02-08 19:52:19

标签: php html forms mysqli form-submit

我试图通过按钮(表单)上的SQL数据库更新数据提交。似乎代码应该正常工作,但不是。试图了解我所缺少的东西。

<form method="POST">
        <input type="text" name="first_value" value="1" style="display:none;" disabled>
        <input type="text" name="second_value" value="2" style="display:none;" disabled>
        <input type="submit" name="change_val" style="background: <?=$button_bg;?>;border: 0;padding-top: 10px;padding-bottom: 10px;width: 33.075%;"><?=strtoupper($button_text);?></input>
</form>

-

<?
if(isset($_POST['change_val']))
{
    $first_value = mysqli_real_escape_string($db, $_POST['first_value']);
    $second_value = mysqli_real_escape_string($db, $_POST['second_value']);

    $add_val = "UPDATE order_tasks SET first_value='$first_value' WHERE second_value='$second_value'";
    $saved = mysqli_query($db, $add_val);
    if($saved) {
        echo "Success";
    } else {
        echo "Error";
    }
}
?>

-

所以,谢谢你。

1 个答案:

答案 0 :(得分:0)

问题是,您的<input>字段具有 disabled 属性,因此,它们不会被提交。您已经隐藏了这些字段,但您可以忽略这一点,但您可能希望使用readonly代替:

<form method="POST">
    <input type="text" name="first_value" value="1" style="display:none;" readonly>
    <input type="text" name="second_value" value="2" style="display:none;" readonly>
    <input type="submit" name="change_val" style="background: <?=$button_bg;?>;border: 0;padding-top: 10px;padding-bottom: 10px;width: 33.075%;"><?=strtoupper($button_text);?></input>
</form>

由于您的字段从未提交过,因此$first_value$second_value已设置,因此UPDATE失败。只需使用readonly代替disabled即可解决此问题。

另请注意,您的表单易受攻击SQL injection。您应该使用prepared statements来防止这种情况发生。还要确保您的数据库用户只有required privileges。您可以参考this post以获取有关如何在PHP中阻止SQL注入的更多信息:)

希望这有帮助!