PHP: JSON in CSV konvertieren

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

basti1012

Erfahrenes Mitglied
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:

Sempervivum

Erfahrenes Mitglied
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);
 

basti1012

Erfahrenes Mitglied
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.
 

canju

Mitglied
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
 

canju

Mitglied
ich vermute ich brauche eine foreach schleife? aber ich kriegs nicht hin die schleife um den insert querry drum zu basteln.
 

basti1012

Erfahrenes Mitglied
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
 

canju

Mitglied
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);
?>
 

basti1012

Erfahrenes Mitglied
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…