1

JSONとMySQLデータベースについて質問があります。私が欲しいのは、JSONファイルからデータベースのフィールドにデータをロードできることです。私のJSONファイルは次のようになります:

{
    "wijken": {
        "11": {
            "id": "kml_1",
            "fid": "0",
            "wijziging": "Ja",
            "nieuwnr": "11",
            "naam": "Noordoost",
            "wijk": "Kanaaldorpen en -zone",
            "wijknr": "11",
            "objectid": "1",
            "area": "0",
            "len": "0"
        },
        "12": {
            "id": "kml_2",
            "fid": "1",
            "wijziging": "Ja",
            "nieuwnr": "12",
            "naam": "Noordoost",
            "wijk": "Oostakker",
            "wijknr": "12",
            "objectid": "2",
            "area": "0",
            "len": "0"
        }
    }
}

そして、フィールドを持つテーブル「wijken」を持つデータベースがあります。

ID / FID / WIJZIGING / NIEUWNR / NAAM / WIJK / WIJKNR / OBJECTID / AREA / LEN

ここで、jsonファイルのすべてのデータがそのテーブルに含まれるようにします。(php + javascript)

誰かが私が始めるのを手伝ってもらえますか?(または、いくつかの優れた検索用語のチュートリアルを提供するかもしれません)

前もって感謝します!

4

2 に答える 2

4

まず、ファイルシステムからファイルをロードする必要があります

$json_string = file_get_contents('some/path/to/file.json');

次に、を使用してjson文字列をphp配列に変換できますjson_decode

$data = json_decode($json_string, true); 

この時点で、データにアクセスしてwijkenテーブルに移動できるようになります$data['wijken']

このデータをmysqlデータベースに挿入するには、phpmysql拡張機能の1つであるmysqliまたはPDOを使用する必要があります。

この例ではmysqliを使用します。

// first create a connection to your database
$mysqli = new mysqli('localhost', 'user', 'password', 'database_name');

// this insert query defines the table, and columns you want to update
$query = <<<SQL
INSERT INTO wijken ('ID', 'FID', 'WIJZIGING', 'NIEUWNR', 'NAAM', 'WIJK', 'WIJKNR', 'OBJECTID', 'AREA', 'LEN')
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
SQL;

$stmt = $mysqli->prepare($query);

// for each of the 'rows' of data in the json we parsed, we will insert each value
// into it's corresponding column in the database, and we are doing this using prepared
// statements.
foreach ($data['wijken'] as $key => $value) {
    $stmt->bind_param(
        // the types of the data we are about to insert: s = string, i = int
        'sissssiiii', 
        $value['id'],
        $value['fid'],
        $value['wijziging'],
        $value['nieuwnr'],
        $value['naam'],
        $value['wijk'],
        $value['wijknr'],
        $value['objectid'],
        $value['area'],
        $value['len']
    );

    $stmt->execute();
}

$stmt->close();

// close the connection to the database
$mysqli->close();
于 2013-01-12T18:14:06.367 に答える
1

これにより、jsonキーと値が出力されます。

$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($jsonIterator as $key => $val) {
    if(is_array($val)) {
        echo "$key:\n";
    } else {
        echo "$key => $val\n";
    }
}
于 2013-01-12T17:09:23.053 に答える