foreach内でのデータベース登録
MDB2を使用しております。配列の値をforeach内でのデータベースに
登録をしたく以下のようなソースでやっているのですが
MDB2 Error: constraint violationとエラーが出てしまいます。
長文となりますが以下が詳細です。
$products_dataのデバッグ結果
Array
(
[130_df08024b_S_0] => Array
(
[num] => 1
[products_id] => 130
[products_code] => df08024b
[name] => 商品名1
[tax] => 84
[price] => 1680
[classcategory_name1] => S
[classcategory_name2] => 0
[classcategory_id1] => 56
[classcategory_id2] => 0
[point_rate] => 10
[add_point] => 168
)
[140_df08024c_M_0] => Array
(
[num] => 1
[products_id] => 140
[products_code] => df08024c
[name] => 商品名2
[tax] => 53
[price] => 1050
[classcategory_name1] => M
[classcategory_name2] => 0
[classcategory_id1] => 46
[classcategory_id2] => 0
[point_rate] => 10
[add_point] => 105
)
)
foreach ($products_data as $key => $val) {
foreach ($val as $key2 => $val2) {
// 変数に代入
$$key2 = mysql_real_escape_string($val2);
}
$fields2[$key] = array('order_id' => $order_id,
'product_id' => $products_id,
'product_name' => $name,
'product_code' => $products_code,
'classcategory_id1' => $classcategory_id1,
'classcategory_id2' => $classcategory_id2,
'classcategory_name1' => $classcategory_name1,
'classcategory_name2' => $classcategory_name2,
'price' => $price,
'num' => $num,
'point_rate' => $point_rate);
// INSERT文生成
$res = $mdb2->extended->autoExecute(products_order_detail, $fields2[$key], MDB2_AUTOQUERY_INSERT);
}
print_r($fields2)
以下デバッグの結果です。思うようにデータは入っております。
Array
(
[130_df08024b_S_0] => Array
(
[order_id] => 370139549628
[product_id] => 130
[product_name] => 商品名1
[product_code] => df08024b
[classcategory_id1] => 56
[classcategory_id2] => 0
[classcategory_name1] => S
[classcategory_name2] => 0
[price] => 1680
[num] => 1
[point_rate] => 10
)
[140_df08024c_M_0] => Array
(
[order_id] => 370139549628
[product_id] => 140
[product_name] => 商品名2
[product_code] => df08024c
[classcategory_id1] => 46
[classcategory_id2] => 0
[classcategory_name1] => M
[classcategory_name2] => 0
[price] => 1050
[num] => 1
[point_rate] => 10
)
)
商品が1つの場合であればうまく動作するのですが2つ以上になると
やはりエラーとなってしまいます。
複数の場合のみのエラーなので簡単な間違いかと思いいろいろ考え
試してみたのですが原因がわからずにいる状態です。
どのように変更すればいいものでしょうか?宜しくお願い致します。
補足
納得です。