我有这样的表格:
<div class="col-md-6">
<h4>Update Contact Details</h4>
<form action="" method="post" name="contact" id="contact">
<div class="form-group">
<label>*Address:</label>
<input type="text" class="form-control" id="address_line_1" name="address_line_1" value="<? echo $address_line_1; ?>" placeholder="Address Line 1..." required="required">
<input type="text" class="form-control" id="address_line_2" name="address_line_2" value="<? echo $address_line_2; ?>" placeholder="Address Line 2...">
<label>*Postcode:</label>
<input type="text" class="form-control" id="postcode" name="postcode" value="<? echo $postcode; ?>" placeholder="Postcode" required="required">
</div>
<div class="form-group">
<label>*Phone Number:</label>
<input type="number" class="form-control" id="contact_number" name="contact_number" value="<? echo $contact_number; ?>" placeholder="Phone Number" required="required">
</div>
<div class="form-group">
<input type="hidden" class="form-control" id="userid" name="userid" value="<? echo $userid; ?>">
<button type="submit" id="contact" name="contact" class="btn btn-primary btn-sm">Save Details</button>
</div>
</div>
哪个运行到此脚本:
if(isset($_POST['contact'])){
$address_line_1 = str_replace("'","\\'",$_POST['address_line_1']);
$address_line_2 = str_replace("'","\\'",$_POST['address_line_2']);
$postcode = str_replace("'","\\'",$_POST['postcode']);
$contact_number = $_POST['contact_number'];
$uid = $_POST['userid'];
mysqli_query($conn, "UPDATE ap_users SET address_line_1 = '$address_line_1', address_line_2 = '$address_line_2', postcode = '$postcode', $contact_number = '$contact_number' WHERE user_id = '$uid'");
}
非常基本,我知道 - 当我发送表单时,页面上回显的变量(例如echo $address_line_1
)都会更改为新结果,但是当我重新加载页面时,它们会返回到旧结果。我发送表单时似乎没有更新MySQL数据库,我不太清楚为什么?
答案 0 :(得分:1)
根据OP的要求。
将die(mysqli_error($conn))
添加到mysqli_query()
以查看是否有错误。
最好也使用affected_rows()
进行更新。
此外,您正在使用if(isset($_POST['contact'])){
并且表单和按钮具有2x名称属性。
从<form>
中移除一个。 <form>
上的名称属性仅在使用jQuery / Ajax时才有效。
另外,如果您的表单和PHP / SQL在同一个文件中,请使用标题重定向到同一页面,并确保在标题之前没有*
输出。并确保启用短标签。
参考文献:
*
How to fix "Headers already sent" error in PHP 您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或PDO与prepared statements。