我一直在努力尝试更新多行,但每次尝试我最终只更新一行
CONTROLLER
public function update()
{
$data['msg'] = '';
$id = $_POST['reg_id'];
$data['students'] = $this->test_model->getStudentData();
if (isset($_POST['submit'])) {
if (empty($id) || $id==0) {
$data['msg'] = 'empty';
} else {
$userId = "'".implode("', ' ", $id)."'";
$class =$this->input->post('class');
$this->test_model->update($userId, $class);
}
}
$this->load->view('test', $data);
}
MODEL
public function update($where, $data){
$this->db->query('UPDATE table SET data="'.$data.'" WHERE where IN('.$where.')');
}
查看
对不起伙计们!我一直很忙,只是有机会回复你。
以下是表单视图
我已经尝试过我们从你们那里得到的所有解决方案,但我无法得到我想要的东西。也许张贴表单视图可以帮助你们提供更好的解决方案
<form action="<?php echo base_url() ?>test/update" method="POST" >
<select name="class" id="">
<option value="some value">some value</option>
<option value="some value">some value</option>
<option value="some value">some value</option>
<option value="some value">some value</option>
<option value="some value">some value</option>
</select>
<input type="submit" name="submit" value="submit">
<table border="1">
<thead>
<tr>
<th>REG. ID</th>
<th>SURNAME</th>
<th>FIRST NAME</th>
<th>MIDDLE NAME</th>
<th>CLASS</th>
</tr>
</thead>
<tbody>
<?php foreach ($students as $key): ?>
<tr>
<td><input type="checkbox" name="reg_id[]" value="<?php echo $key->reg_id ?>"><?php echo $key->reg_id ?></td>
<td><?php echo $key->first_name ?></td>
<td><?php echo $key->last_name ?></td>
<td><?php echo $key->mid_name ?></td>
<td><?php echo $key->class ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table><br>
</form>
答案 0 :(得分:0)
我对你想要达到的目标做了一些假设但是,如果我理解正确的话,我认为这就是你要找的东西。
<强>控制器强>
public function update()
{
$data['msg'] = 'empty';
$data['students'] = $this->test_model->getStudentData();
if(!isset($_POST['submit']))
{
$id_list = $this->input->post('reg_id');
if($id_list) //were any checkboxes posted?
{
$data['msg'] = '';
$class = $this->input->post('class');
if($class) //make sure it was posted
{
$this->test_model->update($id_list, $class);
}
}
}
$this->load->view('test', $data);
}
该模型使用update_batch()
<强>模型强>
public function update($id_list, $data)
{
foreach($id_list as $id)
{
$update_data[] = ['where' => $id, 'data' => $data,];
}
if(isset($update_data))
{
$this->db->update_batch('table', $update_data, 'where');
}
}
答案 1 :(得分:0)
在您的查询中,您错过了在查询中传递列名称。 当您使用IN关键字时,必须在IN关键字之前需要数据库列名称。
例如:UPDATE table_name SET name =&#39; abcd&#39;在哪里id IN(&#39; 2,3,5&#39;);
这将更新记录编号2,3和5。
在模型中尝试以下代码。在查询中添加数据库列名称。
[{"id":"1","time":"12.00"},{"id":"2","time":"13.00"}]