Php 未按照所选id获取数据

Php 未按照所选id获取数据,php,mysql,codeigniter-2,Php,Mysql,Codeigniter 2,以下是我的表格,即tbl\u工具和tbl\u工具。 tbl_tools表如下所示 id name quantity available type 5 cutting player 5 5 engineer 6 reflectors 2 2 team 7 spanner 8 8

以下是我的表格,即
tbl\u工具
tbl\u工具
tbl_tools
表如下所示

id  name            quantity    available   type        
5   cutting player     5          5        engineer     
6   reflectors         2          2        team     
7   spanner            8          8        engineer     
8   tester             4          4        team     
id  user_id     type       tool_id    quantity  start_date  end_date
92     27      engineer     7,5         2,4          2016-12-24         
使用的
tbl\u工具
如下所示

id  name            quantity    available   type        
5   cutting player     5          5        engineer     
6   reflectors         2          2        team     
7   spanner            8          8        engineer     
8   tester             4          4        team     
id  user_id     type       tool_id    quantity  start_date  end_date
92     27      engineer     7,5         2,4          2016-12-24         
这是我的更新代码

            $t_id = $this->input->post('tool_id'); //array of id
            $qty = $this->input->post('quantity'); //array or qty
            $updateArray = array();
            for($x = 0; $x < sizeof($t_id); $x++){
             $updateArray[] = array(
             'id'=>$t_id[$x],
             'available' => $qty[$x]

             );
             }      
             $this->db->update_batch('tbl_tools',$updateArray, 'id');

这里给出的
工具id
7
5
,选择的数量分别是
2
4
。当我使用我的代码时,只有
数量的第一个值在
id
中都被更改,s、 需要根据所选id进行更改请帮助我解决问题

首先制作下面描述的工具id和数量数组

$data = array(
       array(
          'id' => '7' ,
          'available' => '3'
       ),
       array(
          'id' => '5' ,
          'available' => '2' ,
       )
    );
然后执行批量更新

$this->db->update_batch('tbl_tools', $data, 'id'); 
参考:如何制作多维数组

$tool_id=array(7,5);
$quantity=array(3,2);
$data = array();
$i = 0;
foreach($tool_id as $t){
   $data[$i]['id'] = $t;
   $data[$i]['available'] = $quantity[$i];
   $i++;
}

首先制作下面描述的刀具id和数量数组

$data = array(
       array(
          'id' => '7' ,
          'available' => '3'
       ),
       array(
          'id' => '5' ,
          'available' => '2' ,
       )
    );
然后执行批量更新

$this->db->update_batch('tbl_tools', $data, 'id'); 
参考:如何制作多维数组

$tool_id=array(7,5);
$quantity=array(3,2);
$data = array();
$i = 0;
foreach($tool_id as $t){
   $data[$i]['id'] = $t;
   $data[$i]['available'] = $quantity[$i];
   $i++;
}

调用update时,
$data
看起来像
array('available'=>array(3,2))
,因此
db->update
命令正在
available
中更新
eq
array(3,2)
。由于db字段不采用
数组
,并且很可能是一个int字段,因此它将被缩减为它可以从数组中解析的第一个有效int值。我们如何更改它..请帮助meI不要使用CodeIgniter,但我认为您不应该将嵌套数组作为更新值传递。我相信这是一个1:1的价值体系。现在读起来,我是对的。调用update时,请查看,
$data
看起来像
array('available'=>array(3,2))
,因此
db->update
命令正在
available
中更新
eq
array(3,2)
。由于db字段不采用
数组
,并且很可能是一个int字段,因此它将被缩减为它可以从数组中解析的第一个有效int值。我们如何更改它..请帮助meI不要使用CodeIgniter,但我认为您不应该将嵌套数组作为更新值传递。我相信这是一个1:1的价值体系。现在读起来,我是对的。请回顾@MOHAMMED:如果你不知道如何制作多维数组,请告诉我这看起来不错。查看文档后的一个快速问题>您确定第三个参数可以接受没有分配方向的单个字段名吗?(仅通过将其与具有相同名称的键的相应嵌套数组值组匹配以进行查找而隐含?)这个想法和逻辑我现在弄清楚了,但是我们如何动态地做到这一点呢?…我不太擅长做多维的array@SamuelJackson:我想你已经知道如何使用foreach循环,通过使用它,你可以实现多维array@MOHAMMED:如果你不知道如何制作多维数组,请告诉我这看起来不错。查看文档后的一个快速问题>您确定第三个参数可以接受没有分配方向的单个字段名吗?(仅通过将其与具有相同名称的键的相应嵌套数组值组匹配以进行查找而隐含?)这个想法和逻辑我现在弄清楚了,但是我们如何动态地做到这一点呢?…我不太擅长做多维的array@SamuelJackson:我想你已经知道如何使用foreach循环,通过使用它你可以制作多维数组