Php 有条件地将数据插入MySQL
我有一个表单,我希望用户能够使用该表单将记录插入数据库并对其进行编辑。更新查询可以正常工作,但当表单中的某个字段为空时,它会用一个Php 有条件地将数据插入MySQL,php,mysql,pdo,Php,Mysql,Pdo,我有一个表单,我希望用户能够使用该表单将记录插入数据库并对其进行编辑。更新查询可以正常工作,但当表单中的某个字段为空时,它会用一个NULL或空值替换该特定字段中已存在的数据,从而替换现有数据 如何设置表单以允许它一次插入一个字段,而不将现有记录替换为NULL 这是我的HTML表单: <form action="saveprofile.php" method="post"> <p class="text-muted"> <
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>
更新查询工作得很好。但是现在由于我没有将每个填充设置为必需,当我填充表单的一个部分并将其他部分留空时,数据库表中现有字段中的现有记录将替换为null。您需要通过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";
只需按如下方式重新填充表单数据:
<?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>
你能不能先检查NULL
/空值,然后只在它们存在的情况下有条件地插入它们?是的,这是一个完美的解决方案。但是我不知道怎么做,我是php/MySQL新手,只需将现有值重新填充到表单值中即可。这样,数据库中的值将替换为相同的数据。此代码易受SQL注入攻击。请仔细阅读并使用参数化查询。否则,恶意用户可能会损坏您的数据,或者更糟。因此,我猜在本例中,您的建议是:如果{shortbio='$shortbio'set shortbio='$shortbio'}我正在与syntax@AngelaDutchan请检查更新的答案。我已经在其中添加了代码。这其中有一个问题,它会在查询中留下最后一个额外的逗号(,),所以需要在最后一个查询中对其进行清理query@VikasUmrao我已经更新了代码,添加了rtrim($sql,,'),这将删除额外的逗号。@Shujaat其伟大之处
<?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>