# SQL/PHP was ist richtiger?

**URL:** <https://forum.shopware.com/t/sql-php-was-ist-richtiger/68100>\
**Category:** Programmierung\
**Created:** [3. Juli 2020 um 06:23 UTC](https://forum.shopware.com/t/sql-php-was-ist-richtiger/68100 "2020-07-03T06:23:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![brettvormkopp](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/brettvormkopp/32/7788_2.png) [@brettvormkopp](https://forum.shopware.com/u/brettvormkopp)\
**Post date:** [3. Juli 2020 um 06:23 UTC](https://forum.shopware.com/t/sql-php-was-ist-richtiger/68100/1 "2020-07-03T06:23:40Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![vhafner](https://avatars.discourse-cdn.com/v4/letter/v/5f8ce5/32.png) [@vhafner](https://forum.shopware.com/u/vhafner)\
**Post date:** [3. Juli 2020 um 06:31 UTC](https://forum.shopware.com/t/sql-php-was-ist-richtiger/68100/2 "2020-07-03T06:31:36Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tWeuster](https://avatars.discourse-cdn.com/v4/letter/t/edb3f5/32.png) [@tWeuster](https://forum.shopware.com/u/tWeuster)\
**Post date:** [13. Juli 2020 um 10:11 UTC](https://forum.shopware.com/t/sql-php-was-ist-richtiger/68100/3 "2020-07-13T10:11:41Z")

</div>

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.
