我有一个表单,我希望用户能够将记录插入数据库并编辑它们。更新查询工作正常,但当表单中的字段为空时,它将替换已存在的数据在具有NULL
或空白值的特定字段中,它将替换现有数据。
如何设置表单以允许它一次插入一个字段而不用NULL
替换现有记录?
这是我的HTML
表单:
<form action="saveprofile.php" method="post">
<p class="text-muted">
<input type="text" class="form-control"name="shortbio" id="shortbio" >
</p>
<hr>
<textarea class="form-control" type="text" placeholder="Long Bio" name="longbio" id="longbio"></textarea>
</p>
<hr>
<input type="text" class="form-control" name="location" id="location" >
</form>
我的更新查询:
$sql = "UPDATE profile SET
shortbio='$shortbio',longbio='$longbio',location='$location'
WHERE
user_id=$user_id LIMIT 1";
更新查询工作正常。但是现在因为我没有将每个填充设置为必需,当我填写表单的一个部分并将其他部分留空时,数据库表中现有字段中的现有记录将替换为空。
答案 0 :(得分:0)
您需要通过if / else条件检查表单的每个输入值。之后,您需要相应地生成/执行数据库查询。与更新查询一样,您只会选择以HTML格式提供值的列。如果未给出值,则不会在更新查询中选择这些列。
$sql = "UPDATE profile SET ";
if(!empty($_GET['shortbio'])){
$shortbio = $_GET['shortbio'] ;
$sql .= "shortbio='$shortbio', ";
}
if(!empty($_GET['longbio'])){
$longbio = $_GET['longbio'] ;
$sql .= "longbio='$longbio', ";
}
if(!empty($_GET['location'])){
$location = $_GET['location'] ;
$sql .= "location='$location', ";
}
$sql = rtrim($sql, ','); //Remove additional comma
$sql .= "WHERE user_id=$user_id LIMIT 1";
答案 1 :(得分:0)
只需重新填充表单数据:
<?php
$sql= "select * from table";
$result=mysqli_query($sql);
$row=mysqli_fetch_array($result);
?>
<form action="saveprofile.php" method="post">
<p class="text-muted">
<input type="text" class="form-control"name="shortbio" id="shortbio" value="<?php echo $row['col_name']?>" >
</p>
</form>