有条件地将数据插入MySQL

时间:2017-01-24 10:12:13

标签: php mysql pdo

我有一个表单,我希望用户能够将记录插入数据库并编辑它们。更新查询工作正常,但当表单中的字段为空时,它将替换已存在的数据在具有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";

更新查询工作正常。但是现在因为我没有将每个填充设置为必需,当我填写表单的一个部分并将其他部分留空时,数据库表中现有字段中的现有记录将替换为空。

2 个答案:

答案 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>