Veröffentlicht 18. Mai 201114 j 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
18. Mai 201114 j Hallo, Definiere doch ein Array und leg dort alle Daten ab. Den kannst du mittels return zurück geben. Gruß
19. Mai 201114 j Autor 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 201114 j von LukOnline
19. Mai 201114 j 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ß
20. Mai 201114 j Autor 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?
20. Mai 201114 j Zumindest bei Compiler-Sprachen macht das ja der Destruktor. Hat PHP auch sowas? Compilersprachen gibt es nicht! PHP: Konstruktoren und Destruktoren - Manual
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.