/ / Verwenden Sie PHP, um JSON in MySQL-Tabelle einzufügen - Javascript, PHP, MySQL, Json

Verwenden Sie PHP, um JSON in die MySQL-Tabelle einzufügen - javascript, php, mysql, json

Ich muss ein Javascript-Objekt mit PHP in eine neue MySQL-Tabelle einfügen. Mein Objekt hat folgende Form:

{
rowA:[A1,A2,A3],
rowB:[B1,B2,B3],
rowC:[C1,C2,C3],
}

Ich habe auch ein Array von Spaltennamen:

$columns = array("col1","col2","col3");

Ich muss diese Daten verwenden, um eine MySQL-Tabelle im folgenden Format zu erstellen und zu füllen:

      col1 col2 col3
rowA  A1   A2   A3
rowB  B1   B2   B3
rowC  C1   C2   C3

Ich kann auf meinen Server zugreifen und eine Tabelle erstellen, bin aber noch nicht sicher, wie er mit JSON umgehen soll:

$str = file_get_contents("barchartData/US-HI.json");
$json = json_decode($str, true);
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "CREATE TABLE testTable (
// not sure how to specify column, row, and cell values from the JSON...
)";

Ich bin relativ neu in PHP und konnte keinen Code in PHP zum Laufen bringen, der die JSON-Schlüssel liest und sie als MySQL-Zeilenwerte einstellt.

Antworten:

2 für die Antwort № 1

Wie im vorherigen Kommentar erwähnt, empfehle ich die Aufteilung des Problems. Die Tabellenerstellung sollte kein Problem sein, da die Werte nicht aus der JSON-Datei stammen.

Beginnen wir also mit der Überprüfung Ihrer JSON-Datei. Sie können dafür ein Online-Tool verwenden. Sehen Sie sich den Code an, den Sie neben Ihrem aktuellen Skript ausführen können. Es ist nicht die eleganteste Lösung, aber ich denke, Sie werden die Lösung am besten verstehen.

<?php

echo "<pre>";  // For testing purposes.

// Convert the array to comma separated values as is
// required by the MySQL insert statement.
$fields          = array("col1","col2","col3");
$imploded_fields = implode(",", $fields);

$json            = "{"rowA":["A1","A2","A3"], "rowB":["B1","B2","B3"], "rowC":["C1","C2","C3"]}";
$decoded         = json_decode($json);

foreach ($decoded as $d) {

$values  = implode(",", $d);
$statement =  "INSERT INTO `table` ($imploded_fields) VALUES ($values)";

echo $statement; // Change this to actually execute the statement
}

Hoffe das macht Sinn. Wenn Sie diese Lösung weiter optimieren möchten, schauen Sie sich hilfreiche Funktionen wie an array_map und array_keys.