以下のような配列の形式で、PHP から sql にデータを渡しています。
var_dump($data);
array(
key_id => 'CLA-ARTCC'(length=9)
key2 => 'ZLA'length=3)
key3 => 'LOS ANGELES ACTCC'(length=17)
key4 => 'ACTCC'(length=5)
key5 => 'DEA'(length=3)
key6 => '2555 East Avenue 'P''(length=20)
...
)
私はこのようにSQLロジックを開始しました。これは場合によっては機能しますが、非常にエラーが発生しやすいです。つまり、上記の配列が ' ACTCC
' 欠落して送信された場合、単に ' DEA
' 値を ' ACTCC
' データベース列にプッシュするだけです...
たとえば、配列が値なしでプッシュされた場合key5
(列に変更や更新は必要ありません)。代わりに、着信から値をプッシュkey6
します${data[4]}
...
<?php
.................
$ds = $_POST['data']; // incoming arrays
$fd = json_decode($ds, true);
foreach ($fd as $data) {
array_values($data)
$sql = "MERGE INTO app.table a
using (SELECT '${data[0]}' key_id,
'${data[1]}' key2,
'${data[2]}' key3,
'${data[3]}' key4,
'${data[4]}' key5,
'${data[5]}' key6,
FROM dual) p
ON ( a.key_id= p.key_id )
WHEN matched THEN
UPDATE SET a.key2= p.key2,
a.key3= p.key3,
a.key4= p.key4,
a.key5= p.key5,
INSERT (key_id,
key2,
key3,
key4,
key5,
key6)
VALUES (p.key_id,
p.key2,
p.key3,
p.key4,
p.key5,
p.key6)";
..........
また、破損した文字は失敗します。つまり、上記のkey6
-受信配列キーをマップして、Oracle db テーブルの列名と明示的に一致させるにはどうすればよいですか? *
(以下の MERGE INTO WHEN MATCHED INSERT 構造を維持しながら?) sry sql noob...