Andreas Korthaus: Mehrere Datenbankzugriffe

Beitrag lesen

Hi!

Weil ich eben die Seperate Funktion dazu brauche und ich net ständig dieses $c mit übergeben möchte. (Oder täusch ich mich und alle Variablen die vorher schon irgendwo gesetzt wurden sind in der Funktion auch verfügbar?!?!)

Variablen aus dem globalen Namensraum sind über $GLOBALS['name'] überall verfügbar. Siehe auch: http://de3.php.net/manual/de/reserved.variables.php#reserved.variables.globals

Wobei das eigentlich dem Prinzip der Kapselung der Funktionen widerspricht.

Daher würde ich eigentlich eher eine Klasse hierfür verwenden, da kannst Du die Verbidungskennung als Eigenschaft der Klasse speichern und nutzen, oder wenn Du eben funktionen verwenden willst, dann könnstest Du eine Wrapper-Funktion basteln, das heißt, Du rufst die query-Funktion nicht direkt auf, sondern über über eien Funktion wie:

function db_query($sql) {
  static $conn;
  if (!$conn) {
    $conn = odbc_connect(...);
  }
  return odbc_exec($conn,$sql);
}

das nur mal als Idee. Ist ungetestet, nur um das Prinzip zu erklären. Mit einem Objekt geht das natürlich noch etwas netter.

Und das "SELECT * From fritz" ist nur ein Beispiel. Die Abfragen und auch die INSERTS, UPDATES und DELETES funktionieren ja alle tadellos.

Aber Probleme dieser Art (Querys in einer Schleife) deuten meist auf ein suboptimales Datenbank-Design hin. Ich würde versuchen das ganze über einen JOIN in SQL abzubilden, natürlich muss dann auch die Datenstruktur hierzu passen. Ich hoffe nicht dass Du für jeden User eine eigene Tabelle hast, oder sowas...

Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/