如何使用相同的ID更新数据库中的数据?

时间:2016-08-09 14:09:58

标签: mysql

我有一个表,用户通过复选框存储它的首选项。第一个插入工作正常,但如果用户想要更新首选项怎么办?我当前的逻辑将创建新的行,这是坏的。

有人告诉我删除与用户关联的所有行,然后重新插入,但我读到它会给服务器带来很多负担。

另一个是序列化,但我听说这是一个不好的做法。

如何仅更新用户想要更改的首选项? (假设用户取消选中年龄0-1并检查7-10。然后它应该从数据库中删除0-1,并添加7-10。

HTML

<div class="row">
    <div class="col-md-12">
        <div class="col-md-2 img-thumbnail">
            <img src="assets/images/boy_icon.png" alt="pencil" class="img-circle">
            <div class="checkbox">
                <input type="checkbox" data-id="1" name="childAgeRanges[]" value="0-1" checked="checked">
                <label for="0-1">age 0-1</label>
            </div>
        </div>
        <div class="col-md-2 img-thumbnail">
            <img src="assets/images/boy_icon.png" alt="pencil" class="img-circle">
            <div class="checkbox">
                <input type="checkbox" data-id="2" id="1-3" name="childAgeRanges[]" value="1-3" checked="checked">
                <label for="1-3">age1-3</label>
            </div>
        </div>
        <div class="col-md-2 img-thumbnail">
            <img src="assets/images/boy_icon.png" alt="pencil" class="img-circle">
            <div class="checkbox">
                <input type="checkbox" data-id="3" id="4-6" name="childAgeRanges[]" value="4-6" checked="checked">
                <label for="4-6">age 4-6</label>
            </div>
        </div>
        <div class="col-md-2 img-thumbnail">
            <img src="assets/images/boy_icon.png" alt="pencil" class="img-circle">
            <div class="checkbox">
                <input type="checkbox" id="7-10" name="childAgeRanges[]" value="7-10" checked="checked">
                <label for="7-10">age 7-10</label>
            </div>
        </div>
    </div>
</div>

我的表:

age_id | user_id        | range_id
1        1              | 0-1
2        1              | 1-3
3        1              | 4-6

1 个答案:

答案 0 :(得分:0)

对于此示例,在运行更新查询之前,请选择用户年龄列表。循环它们并检查它们是否在childAgeRanges数组中。如果没有删除其ID。您也可以使用相同的方式添加它们。循环childAgeRanges数组并检查它们是否在结果集中。但如果你问我,我肯定会删除所有年龄,然后再添加它们。 Ot会在服务器和代码上使用更少的资源,不会一团糟。并且相信我删除和添加不会对您的服务器产生严重影响,用户通常不会在他们的设置中进行这么多类型的更改。