PHP: JSON in CSV konvertieren

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Bin ich blöd , oder kann das sein das du versucht 3000-mal den gleichen Eintrag zu machen?
Steht in
'$id',
und
'$commission'
Nicht immer das gleiche drin , so wie du es machst?
Oder übersehe ich da was ?

Und
mysqli_query()
sollte schon in der Schleife und nicht dahinter
 
Zuletzt bearbeitet:
Einmal das und zusätzlich wird die Schleife beendet ohne dass das Insert ausgeführt wird, das passiert erst nach dem Schleifenende:
Code:
//convert json object to php associative array
$data = json_decode($jsondata, true);

//get data details
$id = $data['id'];
$commission = $data['transactionParts']['commissionAmount'];

if ($id == '' or !isset($id)) {$id = null;}
;
if ($commission == '' or !isset($commission)) {$commission = null;}
;

//insert into mysql table
for ($i = 0; $i < count($data); $i++) {
    $insert_data = <<<SQL
INSERT INTO $table_name(
              id,
              commission
            )
            VALUES(
              '$id',
              '$commission'
            )
SQL;
} // hier Schleifenende ohne dass das SQL ausgeführt wurde

$db->query($insert_data);

if (!mysqli_query($db, $insert_data)) {
    die('Error : ' . mysql_error());
}
mysqli_close($db);
 
Und nochwas
Code:
$db->query($insert_data);

if(!mysqli_query($db, $insert_data))
Da mit schreibst du alles doppelt in der DB.

Du solltest dich für
Objektorientierter Stil
oder
Prozeduraler Stil entscheiden. Das zu mischen funktioniert vielleicht , aber ist nicht Sinn der Sache.
 
danke euch beiden.

habe das doppelte ausführen rausgenommen und den teil
PHP:
if (!mysqli_query($db, $insert_data)) {
    die('Error : ' . mysql_error());
}
vor das schleifenende gesetzt. Jetzt wird tatsächlich 3000+ mal der gleiche datensatz in die db geschrieben :D
 
ich vermute ich brauche eine foreach schleife? aber ich kriegs nicht hin die schleife um den insert querry drum zu basteln.
 
erstmal solltest du das , was du in Post 28 geschrieben hast einbauen.
Du hast doch schon nee Schleife. Du musst da nur noch ein paar Sachen reinschmeißen .
Eigentlich brauchst du nur die Zeile
PHP:
for ($i = 0; $i < count($data); $i++) {
Weiter nach oben verschieben wenn ich das jetzt richtig sehe
 
Das von Post 28 habe ich schon geändert. Habe jetzt noch die Zeile weiter nach oben verschoben, hat aber leider nichts geändert. immernoch 3000mal der gleiche datensatz:
PHP:
<?php
// Load the database configuration file
include_once 'dbConfig.php';

$table_name = 'tabellen_name';
//read the json file contents
$jsondata = file_get_contents('path/to/file.json');

//convert json object to php associative array
$data = json_decode($jsondata, true);

for ($i = 0; $i < count($data); $i++) {
  //get data details
  $id = $data[0]['id'];
  $commission = $data[0]['transactionParts'][0]['commissionAmount'];

  if($id == '' OR !isset($id)){$id = null;};
  if($commission == '' OR !isset($commission)){$commission = null;};

  //insert into mysql table
  $insert_data = <<<SQL
  INSERT INTO $table_name(
                id,
                commission
              )
              VALUES(
                '$id',
                '$commission'
              )
  SQL;

  if(!mysqli_query($db, $insert_data))
  {
      die('Error : ' . mysql_error());
  }

}

mysqli_close($db);
?>
 
PHP:
  $id = $data[0]['id'];
  $commission = $data[0]['transactionParts'][0]['commissionAmount'];
Ich kenne jetzt nicht die ganze JSON ,denke aber der JSON Code aus POST 26# 3000 mal länger ist oder ?

Du musst jetzt nur noch die nullen ändern damit die null von 0 bis 3000 hoch zählen kann
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück