gpt4 book ai didi

php - 对新项目和编辑项目使用 REPLACE INTO?

转载 作者:行者123 更新时间:2023-11-29 03:11:55 25 4
gpt4 key购买 nike

这个重构在我看来是可行的,但我希望有人检查我的逻辑:

当前进程:

if (item == new) {
INSERT INTO basic_table
$itemUID = get last insert ID // item's UID
INSERT INTO another_table // more stuff
INSERT INTO another_table2 // more stuff
INSERT INTO another_table3 // more stuff
} else {
$itemUID = $_POST['uid']
UPDATE basic_table
REPLACE INTO another_table // more stuff
REPLACE INTO another_table2 // more stuff
REPLACE INTO another_table3 // more stuff
}

(注意 - REPLACE INTO 用于现有项目,因为它们在所有表中可能有也可能没有条目,具体取决于它们的初始配置)

我突然想到,由于除了 INSERT INTO//REPLACE INTO 之外所有后续查询都是相同的,因此我应该能够重构为:

if (item == new) {
INSERT INTO basic_table
$itemUID = get last insert ID // item's UID
} else {
$itemUID = $_POST['uid']
UPDATE basic_table
}
REPLACE INTO another_table // more stuff
REPLACE INTO another_table2 // more stuff
REPLACE INTO another_table3 // more stuff

考虑到我正在使用 PDO 并且每个查询都有很多参数,这将节省crapload 的空间。

但我想先把它贴在这里,以确保我没有遗漏任何东西。

这种重构会产生相同的结果吗?

最佳答案

如果您不关心主键的变化,请使用REPLACE。如果键需要保持一致,例如,如果它已映射到其他表,则继续使用 INSERTUPDATEREPLACE 删除并重新插入,因此如果您的主键是 auto_increment 字段,它将更改为新的增量值。

关于php - 对新项目和编辑项目使用 REPLACE INTO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893561/

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