我试图通过按钮(表单)上的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";
}
}
?>
所以,谢谢你。
答案 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注入的更多信息:)
希望这有帮助!