我的数据库中有以下表格布局和一些数据。
我通过复选框获取输入,以便用户可以选择所有适用的事故道路状况并将其保存到数据库中。我想说,如果您要添加新记录,只需循环检查检查并将其插入数据库即可
第一个信息现已保存在数据库中,现在用户决定更改路况,无论出于何种原因用户回来并将其更改为以下内容。
现在我的问题是,我应该如何更新我的表格。我首先想到的是删除已有的记录并插入新的记录。
我真正的问题是,假设用户之前选择了 3 个项目,但更改了两个或一个,那么我将如何删除那些未检查的项目,您知道我在说什么。下面是我一直在尝试的一些代码片段。
$accidentRoadConditions = AccidentRoadConditions::findAccidentRoadConditions($acc_det_id);
$wc_array = [];
while ($roadConditions = $accidentRoadConditions ->fetch(PDO::FETCH_OBJ)) {
$wc_array[] = $roadConditions ->rc_id;
}
上面我选择了数据库中已存储的所有路况。
if (isset($_POST['rta_ad_rc'])) {
foreach ($_POST['rta_ad_rc'] as $rc_id) {
//AccidentRoadConditions::save(array(null, $ad_lsid, $rc_id));
// $tmprory = AccidentRoadConditions::findByADAndRCIds($acc_det_id, $rc_id);
// if(!$tmprory){
// AccidentRoadConditions::save(array(null, $acc_det_id, $rc_id));
// }
if(in_array($rc_id, $wc_array)){
$errors[] = "in array <br />";
unset($wc_array[0]);
}
}
}
所以我的问题是如何根据用户检查的内容更新数据库中的值,并删除之前检查过的未检查的值。有点复杂,所以简单介绍一下如何根据上述场景更新数据库。
有什么想法吗?
最佳答案
我认为你需要执行以下操作
- 将选定的支票存储在数组中
- 检查数据库中是否已保存其中任何内容
如果是,则跳过它们,否则将它们添加到数组中
$old_rc_array = []; $new_rc_array = [];
while ($roadConditions = $accidentRoadConditions->fetch(PDO::FETCH_OBJ)) { $old_rc_array[] = $roadConditions->rc_id; }
if (isset($_POST['rta_ad_rc'])) {
foreach($_POST['rta_ad_rc']作为$rc_id){
if(in_array($rc_id, $old_rc_array)){ unset($old_rc_array[array_search($rc_id, $old_rc_array)]); }else{ $new_rc_array[] = $rc_id; }
} }
foreach ($old_rc_array 作为 $rc_to_delete) { AccidentRoadConditions::deleteByADIdAndRCId($hidden_acc_det_id, $rc_to_delete); }
foreach($new_rc_array 作为$rc_to_insert){ AccidentRoadConditions::save(array(null, $hidden_acc_det_id, $rc_to_insert)); }
关于php - 根据选中的复选框更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652803/