SQL/PHP was ist richtiger?

Hallo,

ich habe eine PHP Datei an Shopware „angedockt“ welche 50% mit der API arbeitet und 50% direkt auf die Datenbank zugreift. Vll kennt sich jemand mit php aus. Speziell hier in dem Fall, ob die $pdo ausserhalb von Foreach stehen soll/kann oder ob es innerhalb Foreach soll/kann, oder ob es egal ist.

Schematisches Beispiel:

$allorders = $client->get("orders/",$params);
$allorders = json_decode($allorders);

foreach ($result->data as $singleorder){

  $pdo = new PDO('mysql:host=127.0.0.1;dbname=' . $dbconfig["db"]["dbname"], $dbconfig["db"]["username"], $dbconfig["db"]["password"]);
  $connection = $pdo->prepare("SQL SELECT UPDATE IRGENDWAS");
  $connection->execute(); 
  ...

}

oder so?

$allorders = $client->get("orders/",$params);
$allorders = json_decode($allorders);

$pdo = new PDO('mysql:host=127.0.0.1;dbname=' . $dbconfig["db"]["dbname"], $dbconfig["db"]["username"], $dbconfig["db"]["password"]);

foreach ($result->data as $singleorder){

  $connection = $pdo->prepare("SQL SELECT UPDATE IRGENDWAS");
  $connection->execute(); 
  ...

}

Meine Befürchtung für das erste Beispiel: Die Performance ist schlechter weil für jeden Request ein new PDO erstellt wird.

Meine Befürchtung für das zweite Beispiel: Es könnten ggf Daten veloren gehen wenn nicht jeder Request auf einem eigene abgeschlossenen new PDO zurückgreifen kann?

Danke und Gruss.

IMHO musst du nur einmal den PDO initialisieren (also außerhalb)

Solange das $pdo in den … der foreach nicht überschrieben wird, kann es außerhalb der Schleife platziert werden.

Wobei ich es sogar in eine eigene Methode packen würde. Dann könntest du es dir mittels $this->getDP() sogar in mehreren methoden holen - sofern benötigt.