【发布时间】:2023-03-08 04:46:01
【问题描述】:
我正在做一个需要配置文件的项目,人们可以在其中修改他们的信息。
它正在工作,但我想知道:在 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)
即使只更改了一个值,更改这两个值是否更好? (例二)
性能最好的是什么?谢谢!
【问题讨论】:
-
仅更新已更改的值,并在一个查询中完成所有操作。另外,使用prepared statements 来避免SQL injection 攻击。
-
@AlexHowansky 我知道准备好的陈述,这只是为了快速阅读。你怎么只用一个查询,你用switch吗?在我的个人资料上,我只有两个字段,但将来可能需要更多字段,您建议我做什么?谢谢顺便说一句!
-
有什么区别,快读还是不快?为什么您不使用准备好的语句进行任何阅读?
-
我删除了我的答案。看看这个,或者google一下“动态绑定参数mysqli”:pontikis.net/blog/dynamically-bind_param-array-mysqli
-
是的,没有我的错误,我会看看准备好的声明,这不是我想的那样。谢谢大家!
标签: php mysql optimization mysqli