我想用多个引擎创建一个程序,每个引擎都可以包含一些元素,所以我创建了一个包含三个表的数据库:
然后,用户可以创建新引擎或加载一个,添加或删除此引擎的某些元素,并创建新元素(或编辑旧元素)。现在,当用户创建新引擎时,他可以决定从另一个引擎启动。
在Engine表中,只需要创建一个具有相同名称,描述,......的新引擎。 但是我不知道如何在Selected_elements中添加旧引擎的selected_elements但是使用新的引擎ID。我想做这样的事情:
// I have 2 entries $_POST["engine_name"] (the new name for the new engine) and ["_template_engine_id"] wich contains the id of the old engine to copy
// Create the new engine && get the id
$request = "INSERT INTO engine(name) VALUES (".$_POST["engine_name"].")";
$database->exec($request);
$id = $database->lastInsertId();
// Duplicate all selected_elements with old engine_id
$request = "INSERT INTO selected_elements(engine_id,element_id) SELECT ".$id.", element_id FROM selected_elements where engine_id = ".$_POST["_template_engine_id"];
最后一个$request
是本主题的主题,我想“复制”所有旧引擎选择元素并给它们new-engine_id。我不知道怎么做,因为我很确定这种方式是错误的^^'
是否可能以及如何?
答案 0 :(得分:0)
由于新引擎需要复制更多selected
个元素,因此您无法将它们插入到单个实例中。这样做:
// fetch all elements from the old engine
$query = "SELECT * FROM selected_elements where engine_id = ".$_POST['_template_engine_id'];
$rows = $database->exec($query)->fetch_assoc();
// or whatever your fetch handle is
foreach ($rows as $row) {
// add old element_id to new engine $id
$request = "INSERT INTO selected_elements(engine_id,element_id) VALUES ('".$id."','".$row['element_id']."')";
$database->exec($request);
}