0

我为我的数组创建了一个循环,然后是更新批处理,但是每当我尝试更新 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
        )

)

这就是所有的人,我希望你能帮助我。

4

3 回答 3

1

尝试将数组的每个值括在单引号中,然后执行查询。我已经编辑了代码以将数组值括在单引号中。请尝试一下。这是编辑后的代码。

$updateArray[] = array(
        'poid' => "'".$id[$x]."'",
        'item_desc' => "'".$desc[$x]."'",
        'item_qty' => "'".$qty[$x]."'",
        'price' => "'".$price[$x]."'",
        'total' => "'".$total[$x]."'",
        'status' => "'".$status[$x]."'"
     );
于 2013-08-29T06:16:12.283 回答
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.

}
于 2013-08-29T06:28:51.567 回答
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);
}
于 2013-08-29T06:43:07.727 回答