MySQL / PHP更新多对多表

时间:2017-09-13 00:07:28

标签: php mysql

我的$ _POST数组如下所示:(' child_address'特别是)

Array ( 
    [0] => Array ( 
        [child_address] => 123 Street 1 
    ) 
    [1] => Array ( 
        [child_address] => 123 Street 2 
    ) 
)

当我循环遍历它们以插入MySQL多对多表时,我的数组中的最后一个值将输入到我表中具有相同ID的所有字段。

foreach ($child as $value) {
    $query = "UPDATE M_children
        SET child_address = ?, 
        WHERE personal_id = ?";
    $statement = $db->prepare($query);
    $statement->bind_param('si', $value['child_address'], $_SESSION['mysqlID']);
    $statement->execute();
}

enter image description here

2 个答案:

答案 0 :(得分:2)

这里有几件事:

  1. 无需在for循环中定义查询,也不会更改。
  2. 不需要在for循环中准备语句,它也不会改变。
  3. bindParam绑定一个参数,当参数发生更改时,您需要再次调用execute,它将使用新参数值运行查询。

  4. 这就是错误,你用那个人ID更新每一行。如果您只想更新一行,则需要对更新查询更具选择性。

答案 1 :(得分:1)

当你说" SET child_address =? WHERE personal_id =?"并且两个孩子的personal_id是相同的(127,在你的截图中),这将导致两个孩子被设置为相同的地址。

您想要更改查询,或更改您传入的最后一个参数。