LukOnline Geschrieben 18. Mai 2011 Geschrieben 18. Mai 2011 Hallo zusammen, für meine Webanwendung wollte ich mir eine Funktion Query() erstellen (ich nutze Prepared Statements und mysqli). Bisher war die Abfrage ja immer einfach, da ich den Text direkt mit echo Ausgeben konnte. Bei mehreren Abfragen sieht das aber unschön aus wenn man immer wieder $DB->prepare, $Query->bind_result($Spalte),... schreiben muss. Deswegen wollte ich die eigentliche Abfrage in eine Funktion packen und über Query($SQL) aufrufen. Doch jetzt komme ich ins grübeln. Was muss ich in der fetch-Schleife meiner Funktion machen? Ich muss ja ein Objekt erstellen / befüllen und dann mit return zurückgeben. Was ist dafür der richtige Datentyp? $DB = new mysqli("localhost", "user", "pass", "db"); $Query = $DB->prepare("SELECT SPALTE FROM TABELLE"); $Query->execute(); $Query->bind_result($Spalte); while($Query->fetch()) { // ALT: echo($Spalte); // NEU: ??? } $Query->close(); [/PHP] Gruß, Luk
CSharp92 Geschrieben 18. Mai 2011 Geschrieben 18. Mai 2011 Hallo, Definiere doch ein Array und leg dort alle Daten ab. Den kannst du mittels return zurück geben. Gruß
LukOnline Geschrieben 19. Mai 2011 Autor Geschrieben 19. Mai 2011 (bearbeitet) Hey, danke für deine Antwort. Hatte ganz vergessen, dass ich keinen Datentyp benötige... (immer dieses C# in meinem Kopf^^) Ich habe es nun so gelöst: function Query($SQL) { global $DB; $Result = $DB->query($SQL); if (!$Result) { echo('Ungültige Abfrage: ' . $DB->error); } return $Result; } [/PHP] Das dumme ist nur, dass der Query dann nicht geschlossen wird.... Gibt das Probleme ab einer gewissen Anzahl offener Verbindungen oder werden die am Ende der PHP-Seite automatisch geschlossen? Bearbeitet 19. Mai 2011 von LukOnline
CSharp92 Geschrieben 19. Mai 2011 Geschrieben 19. Mai 2011 Hallo, das weiß Ich nicht. Ich arbeite nicht mit mysqli. Ansonsten kannst du ja eine function schreiben, die das Closen übernimmt. Aber ich denke, dass dieses nicht das Problem sein sollte. Lass es offen. Sollte ein erhöhtes Sicherheitsrisko entstehen, soll sich hier einer zu Wort melden, der sich damit näher beschäftigt. Gruß
LukOnline Geschrieben 20. Mai 2011 Autor Geschrieben 20. Mai 2011 Hallo Ich würde trotzdem vermuten, die Verbindung(en) werden am Ende der Seite geschlossen. Mein DB-Objekt wird ja dann auch geschlossen. Oder? Zumindest bei Compiler-Sprachen macht das ja der Destruktor. Hat PHP auch sowas?
flashpixx Geschrieben 20. Mai 2011 Geschrieben 20. Mai 2011 Zumindest bei Compiler-Sprachen macht das ja der Destruktor. Hat PHP auch sowas? Compilersprachen gibt es nicht! PHP: Konstruktoren und Destruktoren - Manual
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden