2016-04-11 8 views
1

私は1つのmysqlクエリで複数の行を更新できるような方法で解析する必要があるjson配列を持っています。phpを使ってmysqlの複数行をjson配列に更新していますか?

これは私のJSON配列である:

[{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1000"} 
,{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1001"} 
,{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1003"}] 

私は更新クエリにこのような何かしようとしています: - 私は私が手にするために、上記のJSONを解析できる方法を知りたい

$query="UPDATE urd_voucher_table SET voucher_status ='$status', doc_no = '$docNo' WHERE voucher_id ='$vc_id'"; 

をvoucher_status、doc_no、およびvoucher_idの個々の値。

ご協力いただきありがとうございます。ありがとうございます。

+3

読む[json_decode()](http://php.net/manual/en/function.json-decode.php) – Saty

+1

あなたは以上のループを実行する必要がありますjsonデコード配列。 –

+0

@SameerJainありがとうございました。いくつかのコードで助けてくれますか?私はコーディングに新しいです。 – AndroidNewBee

答えて

1

使用json_decode()

デコードJSONと復号化されたアレイ上のループ。

<?php 
$json = '[{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1000"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1001"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1003"}]'; 
$arr = json_decode($json, TRUE); // Observe the second parameter. If it is TRUE, associative array will be returned irrespective of what json is. 
if (! empty($arr)) { 
    foreach ($arr as $elem) { 
     extract($elem); 
     $query="UPDATE urd_voucher_table SET voucher_status ='$voucher_status', doc_no = '$doc_no' WHERE voucher_id ='$voucher_id'"; 
     // Add your code here. 
    } 
} 

リファレンス使用json_decode()

0

extract()のそれがキーと連想配列が返され、値のペアは次のように:

$strJson = '[{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1000"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1001"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1003"}]'; 
    $arr = json_decode($strJson); 

は戻ります:

アレイ([0] => stdClassオブジェクト([doc_no] => ADV103 [voucher_status] =>閉じた[voucher_id] => URDV1000)[1] => stdClassオブジェクト([doc_no] => ADV103 [voucher_status] => c losed [voucher_id] => URDV1001)今ループを使用して[2] =>はstdClassオブジェクト([doc_no] => ADV103 [voucher_status] =>)[voucher_id] => URDV1003閉鎖)

あなた/データを&インサートを取得することができデータベースを更新する。

0

json文字列を配列にデコードし、結果をループして更新クエリを実行する必要があります。 ...下記その後、

$rows = json_decode('[{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1000"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1001"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1003"}]'); 

foreach ($rows as $row) { 
    $query="UPDATE urd_voucher_table SET voucher_status ='{$row['voucher_status']}', doc_no = '{$row['doc_no']}' WHERE voucher_id ='{$row['voucher_id']}'"; 
    // ... Run query etc.. 
} 
0

まず使用json_encode()foreachでの結果の配列を反復処理し、私の例を参照してください。 http://www.geeksengine.com/database/data-manipulation/bulk-insert.php

$jsonString = '[{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1000"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1001"},{"doc_no":"ADV103","voucher_status":"closed","voucher_id":"URDV1003"}]'; 
$json_decoded = json_decode($jsonString); 
foreach($json_decoded as $index=>$val){ 
    $status = $val->voucher_status; 
    $docNo = $val->doc_no; 
    $vc_id = $val->voucher_id; 
    $query="UPDATE urd_voucher_table SET voucher_status ='$status', doc_no = '$docNo' WHERE voucher_id ='$vc_id'"; 
    //execute query here 
} 
0

詳細情報は

  1. デコードJSON
  2. がそれぞれにこの部分のレコード
  3. 建てられ、連結データあたりのforeachループを適用し、次の手順に従います。次のように例えばJSONのレコード (a,e,r),(br,t,y),(t,y,c);

  4. ハードコードクエリでこの部分 "Insert into table (c1,c2,c3) VALUES"

  5. そしてstep 3で作成されたattcheデータ。

最終クエリは次のようになります

Insert into table (c1,c2,c3) VALUES . STEP 3 
関連する問題