Joopi
[PHP/MySQL] DB-Abfragen in Funktionen auslagern - Druckversion

+- Joopi (https://forum.hermann-splitthoff.de)
+-- Forum: Wissenswertes (https://forum.hermann-splitthoff.de/forumdisplay.php?fid=1)
+--- Forum: Programmieren (https://forum.hermann-splitthoff.de/forumdisplay.php?fid=6)
+--- Thema: [PHP/MySQL] DB-Abfragen in Funktionen auslagern (/showthread.php?tid=72)



DB-Abfragen in Funktionen auslagern - Joopi - 07-01-2023

Endlich habe ich es nicht nur geschafft, dass ich Datenbankabfragen in externe Scripte auslagere, sondern ich habe es zudem auch endlich mal begriffen.

Bislang schreibe ich immer alles in ein PHP-Script. Nur die Zugangsdaten für die Datenbankabfrage habe ich bereits vor Jahren ausgelagert und greife über eine include-Anweisung darauf zu.

Nun habe ich zwei weitere Scripte, neben dem DB-Include, erstellt. Im ersten Script wird die Datenbankverbindung aufgebaut, im zweiten Script werden die Datenbankabfragen innerhalb von Funktionen durchgeführt.

Die Funktionsergebnisse kann ich dann im Hauptscript nutzen. Dadurch wird das Hauptscript übersichtlicher.

Mein Vorgehen kommt aus der prozdualen Ecke. Die liegt mir mehr als die objektorientierte Methode. Mir liegt es nicht an Geschwindigkeit, sondern eher am einfachen Erstellen weiterer Script in anderen Projekten.

Und ich bin mir sicher, dass ich noch mehr auslagern kann und der geneigte Fachmann mal wieder einen Schenkelklopfer loslässt. Das ist mir aber egal. Ich habe endlich das, was ich seit langer Zeit brauche. Erweiterungen und Verfeinerungen können irgendwann angeflanscht werden.

Insgesamt gibt es also 4 Scriptdateien:

Datenbankzugangsparameter

PHP-Code:
<?php
    
/* Zugangsparameter */
    $host "localhost";
    $user "user";
    $pwd "passwort";
    /* Datenbanken */
    $dbname001="datenbank";
    /* Tabellen */
    $tblname001="user";
    $tblname002="userdetail";
    $tblname003="session";
?>

Datenbankverbindungsaufbau

PHP-Code:
<?php
    
include("db_connect.inc.php");

    $db mysqli_connect($host$user$pwd$dbname004);

    if(!$db) {
        exit("Verbindungsfehler: ".mysqli_connect_error());
    }
?>

Datenbankfunktionen

PHP-Code:
<?php
    
// Der spätere Aufruf ist: php php_test_funktion_slave.php

    $query_vg 0;

    // Definition der Funktion, wobei die DB-Verbindung ausgelagert wurde.
    function vorgang($db){
        include("php_test_funktion_db.php");
        $query_vg mysqli_query($db"SELECT id, mailadresse, vorname FROM $tblname021 WHERE id >= 35");
        return $query_vg;
    }
?>

Mainscript mit Nutzung der Funktionsergebnissen

PHP-Code:
<?php
    error_reporting
(E_ALL);

    include("php_test_dbfunktion.php");

    // Aufnahme des Funktionsergebnisses
    $result_vg vorgang($query_vg);

    // Ausgabe des Funktionsergebnisses
    while($row_vg mysqli_fetch_row($result_vg)) {
        echo "<p>Das ist die ID: " $row_vg[0] . "</p>\n";
    }
?>

Ich bin derzeit sehr zufrieden, dass ich nun endlich die Datenbeschaffung und die Datenverwendung trennen kann. Immer alles in einem Script abzuhandeln ist besonders bei umfangreichen Projekten und Scripten sehr anstrengend. Hier kann ich nun sehr viel Übersicht gewinnen und die Pflege des Programmcodes optimieren.

Diese Funktionen setze ich nur auf dem lokalen Rechner ein. Auf meinen externen Webspaces habe ich Datenbanken und damit verbundene Abfragen auf ein Minimum reduziert. Das Umschreiben dieser Script spare ich mir derzeit, bis ich mehr weiß und mehr Sicherheit im Umgang mit derartigem Vorgehen habe.