一个查询中的多个 INSERT INTO 但更改了一个字段
Multiple INSERT INTO in one query but with a change of one field
我想创建一个包含多个引擎的程序,其中每个引擎都可以包含一些元素,因此我创建了一个包含三个表的数据库:
- 引擎(engine_id, engine_name,...)
- 元素(element_id、element_name、...)
- Selected_Elements(selected_element_id,engine_id,element_id)
然后用户可以创建新引擎或加载一个引擎,添加或删除该引擎的一些元素,以及创建新元素(或编辑旧元素)。现在,当用户创建一个新引擎时,他可以决定从另一个引擎开始。
在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
是本题的主题,我想"duplicate"所有old-engine-selected-elements,给他们new-engine_id。我不知道该怎么做,因为我很确定这种方式是错误的^^'
这可能吗?如何实现?
由于需要为新引擎复制更多 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);
}
我想创建一个包含多个引擎的程序,其中每个引擎都可以包含一些元素,因此我创建了一个包含三个表的数据库:
- 引擎(engine_id, engine_name,...)
- 元素(element_id、element_name、...)
- Selected_Elements(selected_element_id,engine_id,element_id)
然后用户可以创建新引擎或加载一个引擎,添加或删除该引擎的一些元素,以及创建新元素(或编辑旧元素)。现在,当用户创建一个新引擎时,他可以决定从另一个引擎开始。
在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
是本题的主题,我想"duplicate"所有old-engine-selected-elements,给他们new-engine_id。我不知道该怎么做,因为我很确定这种方式是错误的^^'
这可能吗?如何实现?
由于需要为新引擎复制更多 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);
}