如何在不覆盖的情况下用 foreach 更新 table?

How to update a table with a foreach without overwriting?

所以我正在做一个大学项目,但我有一个真正开始困扰我的问题。 我试图用不同的值多次更新我的数据库,除了最后一个值将被考虑在内:他们正在覆盖自己。

我的代码:

$id_structure = $_POST['id_structure'];
foreach ($id_structure as $id2) {
      $id_structure = explode(",", $id2);
      updateDemandeStructure($id_demande[0], $id2, 0);
}

而我的SQL方法是这样的:

function updateDemandeStructure($id_demande, $id_structure, $principale) {
    global $bd;
    $stmt = $bd->prepare('UPDATE demandes_structures SET id_structure = :id_structure, principale = :principale WHERE id_demande = :id_demande');
    $stmt->bindParam(ID_DEMANDE, $id_demande);
    $stmt->bindParam(ID_STRUCTURE, $id_structure);
    $stmt->bindParam(':principale', $principale);
    $stmt->execute();
}

例如,如果我 (id_demande = 1) 选择 4 个新结构,它们的 id_structure 为:22,23,24,25,我将 table 谁长得像:

ID_DEMANDE ID_STRUCTURE PRINCIPALE
1 25 0
1 25 0
1 25 0
1 25 0

请问有谁知道要在我的代码中修改什么,以便我的 table 在更新后看起来像这样吗?

ID_DEMANDE ID_STRUCTURE PRINCIPALE
1 22 0
1 23 0
1 24 0
1 25 0

非常感谢!

感谢您的所有回答,因为我 运行 没时间了,我决定选择@ADyson 的解决方案:

而不是这样做:


foreach ($id_structure as $id2) {
      $id_structure = explode(",", $id2);
      updateDemandeStructure($id_demande[0], $id2, 0);
}

我这样做了:

deleteDemandeStructure($id_demande[0]);

foreach ($id_structure as $id2) {
      $id_structure = explode(",", $id2);
      addDemandeStructure($id_demande[0], $id2, 0);
}

如果我有时间设置一个更动态的版本,我会回来找你的!