我正在研究一个需要profil的项目,其中的人员可以修改其信息。从PHP构建SQL更新语句的最佳方法
它的工作,但我想知道:什么是最好的方式来改变一个MySQL数据库中的行?我应该按价值修改价值还是更新一切?
例子: 这里我得到了当前的名字和姓是,当它从什么是目前在我的数据库
例1不同,我只更新 - 由值值
我如果有更改,则对每个数据进行两次查询。
if((!empty($name)) && ($nom != $name_user)){
$sql = "UPDATE user SET name_user='$name' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your name has been modified</h2>';
}
if((!empty($firstname)) && ($firstname!= $firstname_user)){
$sql = "UPDATE user SET name_user='$name' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your firstname has been modified</h2>';
}
为例2 - 在一个查询
它确实相同,但只使用一个查询一切。
if(((!empty($firstname)) && ($firstname!= $firstname_user)) || ((!empty($firstname)) && ($firstname!= $firstname_user))){
$sql = "UPDATE user SET name_user='$name', firstname_user='$firstname' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your profil has been modified</h2>';
}
只是在实际更改时更新值才更好吗? (示例1)
即使只更改了一个值,更改两个值会更好吗? (示例2)
什么可能是最好的表现?谢谢 !
只更新已更改的值,并在一个查询中完成所有操作。另外,使用[** prepared statements **](https://secure.php.net/manual/en/mysqli.prepare.php)避免[** SQL注入**](https://en.wikipedia .org/wiki/SQL_injection)攻击。 –
@AlexHowansky我了解准备好的陈述,这只是一个快速阅读。你如何只使用一个查询,你使用[switch](http://php.net/manual/fr/control-structures.switch.php)?在我的专业领域,我只有两个领域,但未来我可能需要更多,你推荐我做什么?谢谢btw! – Gingerboy
有什么区别,快速阅读还是不快?为什么你不用任何阅读准备好的语句,你应该? –