0

次のような2D配列があります。

Array(
[1] =>  Array
      (
        [0] => 15956,3
        [1] => 15984,0.13
        [2] => 15940,1
      )

[2] => Array
    (
        [0] => 15918,0.5
        [1] => 15970,0.5
        [2] => 15902,0.5
        [3] => 15943,0.5
    )

foreach ループを統合して、配列の各子を通過し、動的 ​​SQL ステートメントを生成するにはどうすればよいでしょうか...例:

UPDATE main_stock SET on_hand -= 3 WHERE Rcode = 15918
UPDATE main_stock SET on_hand -= 0.13 WHERE Rcode = 15984

等々...

4

3 に答える 3

0
foreach ($array as $subArr) { // Goes through each array of the main array
    foreach ($subArr as $val) { // Goes through each sub array's values
        $sql = "UPDATE `main_stock` SET `on_hand` = 3 WHERE `Rcode` = " . $val;
    }
}

それはあなたが探しているものですか?

于 2013-02-18T13:21:37.987 に答える
0

これらの値を一時テーブルまたはサブクエリとして作成し、次のUPDATEように 2 つのテーブルを結合できます。

UPDATE main_stock m
INNER JOIN
(
   SELECT 15956 AS Rcode, 3 on_hand
   UNION ALL
   ...
) AS t ON m.on_hand = t.on_hand 
SET m.on_hand -= t.on_hand;
于 2013-02-18T13:21:12.713 に答える
0

$iar入力配列です。

foreach( $iar as $tar )
    foreach($tar as $line)
    {
        list($id,$value) = split(",",$line);
        mysql_query("UPDATE main_stock SET on_hand -= $value WHERE Rcode = $id");
    }
于 2013-02-18T13:30:50.317 に答える