Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用codeigniter更新多行_Php_Mysql_Codeigniter - Fatal编程技术网

Php 使用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=

我试图在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="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
        )

)