我为我的数组创建了一个循环,接下来是更新批处理,但每当我尝试更新1项时,我的代码都不会更新。我无法发现我的错误在哪里。如何以简单的方式执行更新批处理?
这是我的代码:
/*THIS IS ALL ARRAY*/
$id = $this->input->post('idx');
$desc = $this->input->post('itemdesc');
$qty = $this->input->post('qty');
$price = $this->input->post('price');
$status = $this->input->post('status');
for($x = 0; $x < sizeof($id); $x++){
$total[] = $price[$x] * $qty[$x];
$updateArray[] = array(
'poid' => $id[$x],
'item_desc' => $desc[$x],
'item_qty' => $qty[$x],
'price' => $price[$x],
'total' => $total[$x],
'status' => $status[$x]
);
$this->db->update_batch('po_order_details',$updateArray, 'poid'); //I guess poid is my error but im not sure. I think my array won't find the correct id for where.
}
这是我的数组示例输出:
Array
(
[0] => Array
(
[poid] => 5
[item_desc] => Yakisoba
[item_qty] => 15
[price] => 40,000.00
[total] => 600
[status] => ACTIVE
)
[1] => Array
(
[poid] => 6
[item_desc] => Laptop
[item_qty] => 5
[price] => 15,000.00
[total] => 75
[status] => ACTIVE
)
[2] => Array
(
[poid] => 7
[item_desc] => Speaker
[item_qty] => 3
[price] => 5,000.00
[total] => 15
[status] => ACTIVE
)
[3] => Array
(
[poid] => 8
[item_desc] => Mouse
[item_qty] => 5
[price] => 500.00
[total] => 2500
[status] => ACTIVE
)
[4] => Array
(
[poid] => 9
[item_desc] => Keyboard
[item_qty] => 5
[price] => 1,000.00
[total] => 5
[status] => ACTIVE
)
)
这是所有人,我希望你能帮助我。
答案 0 :(得分:1)
尝试在单引号中包含数组的每个值,然后执行查询。我已经编辑了代码,将数组值封装成单引号。请试试。 这是编辑过的代码。
$updateArray[] = array(
'poid' => "'".$id[$x]."'",
'item_desc' => "'".$desc[$x]."'",
'item_qty' => "'".$qty[$x]."'",
'price' => "'".$price[$x]."'",
'total' => "'".$total[$x]."'",
'status' => "'".$status[$x]."'"
);
答案 1 :(得分:1)
尝试这样可能会对您有所帮助:
/*THIS IS ALL ARRAY*/
$id = $this->input->post('idx');
$desc = $this->input->post('itemdesc');
$qty = $this->input->post('qty');
$price = $this->input->post('price');
$status = $this->input->post('status');
for($x = 0; $x < sizeof($id); $x++){
$total[] = $price[$x] * $qty[$x];
$updateArray = array(
//'poid' => $id[$x],
'item_desc' => $desc[$x],
'item_qty' => $qty[$x],
'price' => $price[$x],
'total' => $total[$x],
'status' => $status[$x]
);
$this->db->where('poid', $id[$x])->update('po_order_details', $updateArray);
//$this->db->update_batch('po_order_details',$updateArray, 'poid'); //I guess poid is my error but im not sure. I think my array won't find the correct id for where.
}
答案 2 :(得分:0)
好的,我做到了,但我的过程很长
for ($x = 0; $x < sizeof($id); $x++) {
$total[] = $price[$x] * $qty[$x];
$idvar = $desc[$x];
$updateArray[] = array(
'poid' => $id[$x], 'item_desc' => $desc[$x], 'item_qty' => $qty[$x],
'price' => $price[$x], 'total' => $total[$x], 'status' => $status[$x]
);
}
for ($var = 0; $var < sizeof($updateArray); $var++) {
$idx = $updateArray[$var]['poid'];
$test = array(
'item_desc' => $updateArray[$var]['item_desc'],
'item_qty' => $updateArray[$var]['item_qty'],
'item_price' => $updateArray[$var]['price'],
'total' => $updateArray[$var]['total'],
'status' => $updateArray[$var]['status']
);
$this->db->where('poid', $updateArray[$var]['poid']);
$this->db->update('po_order_details', $test);
}