PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Datenbankaufruf


Big-Gremlin
05.06.2009, 17:08:21
ich hab mir noch nie darüber Gedanken gemacht, aber jetzt bastel ich meine Seite in Klassen um

bis jetzt habe ich immer meinen Datenbankaufruf in eine Variable gesteckt....also
$db_open = new PDO('mysql:host=localhost;dbname=' . $db_name, $db_user, $db_password);

beim Verwenden einer Datenbank wurde bis jetzt immer nur diese Variable aufgerufen....

jetzt habe ich alles in eine funktion gesteckt....

function db_open()
{
$db_user = '******';
$db_password = '******';
$db_name = '******';
$db_open = new PDO('mysql:host=localhost;dbname=' . $db_name, $db_user, $db_password);
return $db_open;
}

und beim Verwenden der Datenbank wird nun die Funktion aufgerufen....

wenn ich jetzt aber mehrere Datenbankverwendungen auf einer Seite habe...wird demzufolge auch pro Aufruf die Funktion gestartet....also immer ein neues PDO-Objekt generiert....

meine Frage is jetzt....ist das überhaupt performant??? bei der Variable wird ja wie gesagt nur 1 Objekt generiert

Big-Gremlin
11.06.2009, 14:53:18
keener ne Antwort parat? :(

cortex
11.06.2009, 15:13:47
wenn ich jetzt aber mehrere Datenbankverwendungen auf einer Seite habe...wird demzufolge auch pro Aufruf die Funktion gestartet....also immer ein neues PDO-Objekt generiert....

die frage hast du dir doch bereits selbst beantwortet... natürlich ist diese vorgehensweise weder performent, noch sinnvoll.

cx

Big-Gremlin
11.06.2009, 21:34:01
mhm...naja...ich wußte nicht wie stark sowas den server belastet.....ich versuche die datenbankaufrufe immer relativ gering zu halten....

aber ich machs jetz mit einer Variable ;) muss ich die halt globalisieren damit die in den funktionen funktioniert ;)

DokuLeseHemmung
11.06.2009, 22:15:01
muss ich die halt globalisieren damit die in den funktionen funktioniert
Och nöööö....
Das mit dem global tut doch keine Not.

Was ist wenn du mal eine 2te Verbindung brauchst?
Was dann?
Alle Funktionen verdoppeln und umschreiben?

Big-Gremlin
13.06.2009, 03:41:35
na wie will mans denn sonst machn???

ich hab das Datenbankobjekt in einer Variable......und die einzelnen queries (PDO mit prepared Statements) sind in den jeweiligen funktionen...

$sql_register = 'INSERT INTO user (USER_NAME, etc) VALUES (:user_name, etc)';
$kommando_register = db_open()->prepare($sql_register);

usw...

db_open is NOCH der funktionsaufruf....muss ich am Ende noch mit einer Variable ersetzen.....wenn ich die Variable aber in der Funktion verwenden will, muss ich sie nunmal globalisieren (ich wüßte zumindest keine andere Möglichkeit)

also jetz bin ich komplett verwirrt....wie gehts nun richtig? ;)

DokuLeseHemmung
13.06.2009, 11:39:46
Du kannst die Variable auch der Funktion als Parameter übergeben.

feuervogel
13.06.2009, 12:51:55
merke: funktionen dienen (u.a.) der wiederverwendung. hardkodierte variablennamen in funktionen behindern wiederverwendung.

Big-Gremlin
13.06.2009, 16:57:36
als Variablenübergabe wärs auch kein problem.... nur ob ich jetz die variable im funktionsaufruf veränder, oder in der Funktion selber..der Aufwand is irgendwie die selbe ;D

vielen Dank....jetz kann ich wenigstens weiter basteln ;)

Big-Gremlin
13.06.2009, 19:14:18
ABER MOMENT!!!!!

mir kommt gerade ein Gedanke.... und zwar...wenn ich die Variable übereb, würde doch in der Funktion selber ein neues Objekt generiert werden, welches nur die Eigenschaften der übergebenen Variable hat.

das wäre im Endeffekt GENAU das gleiche, wie als wenn ich es mit einer Funktionen löse..

wenn ich globalisier würde doch GENAU das Objekt, welches ich globalisier verwendet werden....somit wäre globalisieren performanter wenn ich mehrere datenbankaufrufe auf einer Seite hätte, da wie gesagt nur dieses eine Objekt bei sämtlichen Datenbankaufrufen verwendet wird

oder ist das jetzt ein Denkfehler von mir???

DokuLeseHemmung
13.06.2009, 22:36:36
Ja!