Php 使用codeigniter更新多行
我试图在codeigniter中一次更新多行。下面是我需要为每个用户更新的字段示例Php 使用codeigniter更新多行,php,mysql,codeigniter,Php,Mysql,Codeigniter,我试图在codeigniter中一次更新多行。下面是我需要为每个用户更新的字段示例 <div class="row"> <input type="text" name="id[46][firstname]" value=""> <input type="text" name="id[46][lastname]" value=""> </div> <div class="row"> <input type=
<div class="row">
<input type="text" name="id[46][firstname]" value="">
<input type="text" name="id[46][lastname]" value="">
</div>
<div class="row">
<input type="text" name="id[48][firstname]" value="">
<input type="text" name="id[48][lastname]" value="">
</div>
HTML代码
<div class="row">
<input type="text" name="46[firstname]" value="">
<input type="text" name="46[lastname]" value="">
</div>
<div class="row">
<input type="text" name="48[firstname]" value="">
<input type="text" name="48[lastname]" value="">
</div>
问题是你不了解你的帖子是如何构建数组的。从上面的HTML中,表单将构建以下POST数组:
array =>
[id] =>
[46] =>
[firstname] => "john"
[lastname] => "doe"
[48] =>
[firstname] => "jane"
[lastname] => "doet"
通过这样直观地布置数组,现在可以进行迭代,以获得值。但是,在您的代码中有一点我不明白,那就是为什么要使用explode()
,您要将什么转换成数组?您可以在数据库中轻松迭代和更新此信息,如下所示:
$this->load->model("my_model");
$postdata = $this->input->post();
foreach($postdata['id'] as $id => $user_info){
$this->my_model->update_user($id, $user_info); // your model method should handle the update information by ID.
}
如果您执行echo“
Array
(
[id] => Array
(
[46] => Array
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => Array
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)
)
因此,这将有助于您捕捉这些值:
Array
(
[46] => stdClass Object
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => stdClass Object
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)
结果该结构:
在使用Codeigniter时,您应该避免使用$\u POST,因为它们对这个“$this->input->POST('field\u name')”有更好的功能。
Array
(
[id] => Array
(
[46] => Array
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => Array
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)
)
foreach($_POST['id'] as $key => $value){
$records[$key] = (object)array();
$records[$key]->firstname = $value['firstname'];
$records[$key]->lastname = $value['lastname'];
// update statement to go here
}
Array
(
[46] => stdClass Object
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => stdClass Object
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)