我的$ _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();
}
答案 0 :(得分:2)
这里有几件事:
bindParam绑定一个参数,当参数发生更改时,您需要再次调用execute,它将使用新参数值运行查询。
这就是错误,你用那个人ID更新每一行。如果您只想更新一行,则需要对更新查询更具选择性。
答案 1 :(得分:1)
当你说" SET child_address =? WHERE personal_id =?"并且两个孩子的personal_id是相同的(127,在你的截图中),这将导致两个孩子被设置为相同的地址。
您想要更改查询,或更改您传入的最后一个参数。