我有一个表,用户通过复选框来存储它的首选项。First insert可以很好地工作,但是如果用户想要更新首选项呢?我当前的逻辑将创建新的行,这是不好的。
有人告诉我删除与用户关联的所有行,然后重新插入,但我读到这将给服务器带来大量负载。
另一种是序列化,但我听说这是一种糟糕的做法。
如何仅更新用户想要更改的首选项?(假设用户取消选中年龄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
发布于 2016-08-09 22:21:10
对于此示例,在运行更新查询之前,请选择user age list。循环它们并检查它们是否在childAgeRanges数组中。如果不是,则删除其id。您也可以使用相同的方法添加它们。循环childAgeRanges数组并检查它们是否在结果集中。但如果你问我,我肯定会删除所有年龄,然后再添加它们。Ot将在服务器上使用更少的资源,代码也不会变得一团糟。相信我,删除和添加不会对你的服务器造成那么大的影响,而且用户通常不会在他们的设置中进行这么多类型的更改。
https://stackoverflow.com/questions/38853140
复制相似问题