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