gpt4 book ai didi

MySQL 更新与插入和删除

转载 作者:可可西里 更新时间:2023-11-01 07:33:40 25 4
gpt4 key购买 nike

我正在开发一个网络应用程序项目,有一个相当大的 html 表单需要将其数据存储在一个表中。表单和插入已经完成,但我的客户希望能够将保存的数据加载回 HTML 表单并能够更改它,同样,这没问题,但我在进行更新时遇到了一个问题, 只保留插入查询然后删除旧行(如果是编辑)是否合适?

基本上,已经发生的事情是当提交表单时,所有数据都使用 INSERT 放入表中,如果数据是针对正在更新的现有字段,我还有一个名为 edit 的标志,其中包含主键 ID。我可以通过两种方式处理更新功能:

a) 创建一个包含所有字段/数据集的实际更新查询,并使用 if/else 来决定是运行更新还是插入查询。

b) 每次都插入,插入成功后在DELETE WHERE row=editID 中添加一行。

因为删除只有在插入成功时才会发生,所以我不会冒不插入就删除数据的风险,从而丢失数据,但是由于插入/删除是两个查询,它会比只使用效率低吗一个 if/else 来决定是运行插入还是更新?

还有第二张表使用自增id作为外键,但是每次提交表单都要更新这张表,所以如果我删除表A中的行,我也会删除表 b 中的关联行。这似乎是一种糟糕的编程习惯,所以无论如何我都倾向于选项 a),但仅使用单行选项是非常诱人的。 DELETE 基本上如下所示。这实际上是不好的编程习惯吗?除了惯例之外,还有什么理由可以解释为什么这是“永远不要那样做!”代码类型?

    if ($insertFormResults) {
$formId = mysql_insert_id();
echo "Your form was saved successfully.";
if(isset($_POST['edit'])){
$query = "DELETE FROM registerForm WHERE id='$_POST[edit]'";
$result = mysql_query($query);
}
}

最佳答案

虽然 INSERT/DELETE 选项可以很好地工作,但我建议不要使用它:

  • 除非您捆绑 INSERT/DELETE合并为一个事务,或者更好的是封装INSERT/DELETE 到一个存储你做的程序运行理论累积重复的风险。如果您使用 SP 或交易只是有效地重写更新这显然是声明效率低下,而且会给引起了一些 WTF 的关注后来由维护你的人代码。
  • 虽然这听起来不像你的问题是可能影响引用完整性应该是你需要的。此外,您正在失去相当有用的能力按创建顺序检索记录。
  • 可能不是一个很好的考虑一个小应用程序,但你是将以认真结束碎片化的数据库相当快这会减慢数据检索速度。

关于MySQL 更新与插入和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com