gpt4 book ai didi

php - MySql 在 PHP 中自动更新上下文敏感关系的重复条目

转载 作者:行者123 更新时间:2023-11-29 18:30:23 24 4
gpt4 key购买 nike

是否有可能通过自动更新上下文敏感关系来复制特定条目?

给定一个表“table1”,例如:

enter image description here

我的目标是复制所有类别 ID 为 42 的条目,同时在必要时更新 ParentId:

enter image description here

id 是一个自动递增列,parentId 用于标识条目之间的关系。

目前我正在将它们一一插入,选择旧数据并在 PHP 中管理parentId 的逻辑。

//Thats simplified what I do ($conn is a Zend_Db_Adapter_Abstract)
$rows = $conn->fetchAll("SELECT * FROM table1 WHERE categoryId = 42 ORDER BY parentId ASC");
$newIds = [];
foreach($rows as $row){
if(array_key_exists($row['parentId'],$newIds))
$row['parentId'] = $newIds[$row['parentId']];
else
$row['parentId'] = null;

$conn->query("INSERT INTO table1 (parentId,info,categoryId) VALUES (?,?,?)",[$row['parentId'],$row['info'],$row['categoryId']]);

$newId = $conn->lastInsertId('table1');

$newIds[$row['id']] = $newId;
}

我坚持这一点是因为我需要新元素的lastInsertedId 来为下一个元素设置新的parentId。但我发现这非常慢(相对于包含逻辑的单个查询)。

是否有可能为查询提供某种增量元素敏感逻辑?或者您对如何固定它有什么建议吗?

任何帮助表示赞赏! :)

最佳答案

您没有显示任何代码。我猜你使用 mysqli_insert_id() 来获取最后插入的 ID。也许你可以用 MAX(ID)+1 做点什么。

类似于:

INSERT INTO table1 
SELECT MAX(ID)+1,
info,
categoryId
FROM
table1
WHERE .............. -- the conditions to retreive the parent

关于php - MySql 在 PHP 中自动更新上下文敏感关系的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45732903/

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