PHP Datenbank Klasse verwenden

Im vorherigen Artikel habe ich gezeigt, wie ich den Zugriff auf einer Datenbank durch meine Klasse bereitstelle. Ich werde darauf jetzt nicht mehr direkt eingehen und euch zeigen, wie die Datenbank Klasse verwendet wird.

Zuerst muss ein neue Objekt der Datenbank angelegt und die erwarteten Werte mitgegeben werden. Damit wären die Weichen für eine Datenbankverbindung schon einmal gestellt.

$db = new DB("Server","DB","User","Password");

Vorweg definiere ich die Query für die spätere Abfrage Funktion.

$query = "select * from Table";

Datenbankabfragen haben meist mehr als nur eine Zeile. Die Werte stammen aus dem Array der Funktion execute_query(). Im Foreach ist dadurch mein Aufruf für die eigentliche SQL Abfrage gegeben. Über das $view Objekt werde ich hier nicht sprechen, da es nicht relevant für die Datenbank Abfrage ist.

foreach($db->execute_query($query) as $info){

    $view->draw_table($info[0],$info[2],$info[3],$info[4]);
    
    }

Zum Schluss wird natürlich nur noch die Session wieder geschlossen.

$db_machines->closeSQL();

 

Hier der komplette Code.

db = new DB("Server","DB","User","Password"); 
$query = "select * from Table"; 

foreach($db->execute_query($query) as $info)
{
  $view->draw_table($info[0],$info[2],$info[3],$info[4]);
 }
 
 $db_machines->closeSQL();

 

Hinweis

Da ich bisher noch nicht auf Sicherheit bedacht war, empfehle ich die Klasse nur für interne Projekte und nicht für externe benutzen. Ich möchte hiermit auch nur Denkanstöße geben, wie eine Klasse aussehen könnte.

PHP Datenbank Klasse

Damit ich mir die Arbeit für den Datenbankzugriff und die jeweilige Auswertung der Daten vereinfachen kann, habe ich die Datenbank Klasse geschrieben.

In der Klasse habe ich 6 private Variablen erzeugt, die die Daten der Datenbank Session speichern.

private $_connection;
private $_connectionInfo = array();
private $_host;
private $_username;
private $_db;
private $_password;

Der Konstruktor erwartet die Übergabe des Server, Zugangsdaten und die Datenbank und speichert diese in die privaten Variablen ab.

public function __construct($host,$db,$username,$password)
    {
    $this->_host					= $host;
    $this->_db						= $db;
    $this->_username			= $username;
    $this->_password			= $password;
    $this->_connectionInfo	=array("Database" => $this->_db, "UID"=>$this->_username,"PWD"=>$this->_password);
        $this->_connection = sqlsrv_connect( $this->_host, $this->_connectionInfo);
    }

Somit sind die Zugangsdaten der Klasse bekannt. Damit wir noch ein Nutzen daraus ziehen können, fehlt natürlich noch die SQL Abfrage. Dafür habe ich die function execute_query angelegt, die überprüft, ob eine Datenbank Session erstellt wurde. Als Übergabeparameter wird eine SQL Abfrage erwartet. Das Ergebnis der SQL Abfrage wird in einem mehrdimensionalen Array abgelegt. Die erste Dimension des Arrays ist für die Zeilen der Abfrage, während die zweite Dimension die jeweiligen Daten beinhaltet. Das komplette Array dient als Rückgabewert.

public function execute_query($query)
  {
    $var 	= array();
    $e	= 0;
      if($this->_connection)
      {
        
        $stmt1 = sqlsrv_query($this->_connection, $query);
        while( $row = sqlsrv_fetch_array($stmt1,  SQLSRV_FETCH_NUMERIC))
        {
          
          for($i=0;$i<sizeof($row);$i++){
            $var[$e][$i] = $row[$i];
          }
          $e++;
        }
        
      }else{
        
        echo "<p style='color:red; font-size:20px;'>Connection could not be established to SQL.<br /></p>";
        die( print_r( sqlsrv_errors(), true));
           
       } 
    
    return $var;
  }

Zwar nicht notwendig, aber übersichtshalber habe ich die Funktion closeSQL angelegt, die nichts weiter macht als die aktuelle DB Session zu schliessen.

public function closeSQL(){
  sqlsrv_close($this->_connection);
}

Zum Schluss noch einmal der komplette Code der Datenbank Kasse.

<?php
/********************************Informationen**************************************************

Author: Stefan Többen
Developed: 24.08.2017

**************************************Funktion***************************************************



************************************TODO*********************************************************

alles erledigt

************************************************************************************************/

class DB{
  private $_connection;
  private $_connectionInfo = array();
  private $_host;
  private $_username;
  private $_db;
  private $_password;
  
  

/*****************************************************************************************************/
/*****************************************************************************************************/
public function __construct($host,$db,$username,$password)
    {
    $this->_host					= $host;
    $this->_db						= $db;
    $this->_username			= $username;
    $this->_password			= $password;
    $this->_connectionInfo	=array("Database" => $this->_db, "UID"=>$this->_username,"PWD"=>$this->_password);
        $this->_connection = sqlsrv_connect( $this->_host, $this->_connectionInfo);
    }
  
/*****************************************************************************************************/
/*****************************************************************************************************/	
public function execute_query($query)
  {
    $var 	= array();
    $e	= 0;
      if($this->_connection)
      {
        
        $stmt1 = sqlsrv_query($this->_connection, $query);
        while( $row = sqlsrv_fetch_array($stmt1,  SQLSRV_FETCH_NUMERIC))
        {
          
          for($i=0;$i<sizeof($row);$i++){
            $var[$e][$i] = $row[$i];
          }
          $e++;
        }
        
      }else{
        
        echo "<p style='color:red; font-size:20px;'>Connection could not be established to SQL.<br /></p>";
        die( print_r( sqlsrv_errors(), true));
           
       } 
    
    return $var;
  }
  
/*****************************************************************************************************/
/*****************************************************************************************************/	
public function closeSQL(){
  sqlsrv_close($this->_connection);
}	
  
  
}
?>

Wie die Datenbank Klasse verwendet wird, zeige ich in meinem nächsten Beitrag. PHP Datenbank Klasse verwenden

Rückblende: Sao Paulo

Als ich meine Reise nach Brasilien antrat, war ich aufgrund meines ersten Interkontinentalfluges aufgeregt. Für mich war es das erste Mal, dass ich das Große Wasser überquerte. Als ich in Sao Paulo angekommen bin, wurde ich von einem Taxifahrer abgeholt und erstmal zur Firma gebracht. Dort wurde ich vom Betriebsleiter und Geschäftsführer freundlich empfangen. Ziel der Reise war es, die Netzwerkumgebung und Serverstruktur in unsere Umgebung zu integrieren. Alle Rechner, Drucker und Server mussten in unsere Domäne. Schnell stellte sich heraus, dass die Sprachbarriere ein Problem wird, denn dort wurde nur grob Englisch gesprochen. So wurde oft der Google Translater benutzt, damit ich mich überhaupt mit der Belegschaft ordentlich unterhalten konnte.

Geschäftsessen

In Erinnerung wird mir vorallem das Geschäftsessen bleiben, welches in einem guten brasilianischen Restaurant stattgefunden hat. Die brasilianische Küche hat einiges zu bieten. Interessant war das servieren der Speißen, denn dort gingen die Kellner mit den Fleischsorten von Tisch zu Tisch. Ist man satt, wird die Karte, die auf dem Platz liegt, umgedreht. Damit signalisiere ich, dass ich satt bin und nichts mehr möchte.

Sight Seeing in Sao paulo

Insgesamt blieb ich 7 Tage in Brasilien. Am am Samstag bekam ich eine Rundreise durch Sao Paulo. Sao Paulo hat ca 22 Millionen Einwohner. Diese Stadt ist monströs. Viel Zeit und viele Sehenswürdigkeiten rundeten das Sight seeing ab. Unter anderm war ein Museum, ein Garten und viele Statuen Ziel der Besichtigung. Bilder meiner Tour können in meiner Gallerie besichtig werden. Folgt dazu diesen Link Gallerie.

Geschäftsreise Budapest (Ungarn)

Vor kurzem war ich auf Geschäftreise in Budapest/Ungarn. An für sich eine sehr schöne Stadt. Als Hauptstadt von Ungarn wohnen hier ca. 2 Millionen Menschen, wohingegen Ungarn nur 10 Millionen Einwohner hat. Insgesamt ware ich 4 Tage vor Ort, wobei ich am letzten Tag noch Zeit hatte und mir es erlaubt war für knappe 2 Stunden eine Stadttour zu machen, ehe mein Flug nach Deutschland zurück ging. Da die Zeit knapp war, konnte ich mir nicht alle Sehenswürdigkeiten anschauen und hatte auch nur begrenzt Zeit mir jene anzuschauen.

Unteranderem waren die älteste Kettenbrücke, der Heldenplatz, die Matthiaskirche und das Parlamentsgebäude Teil meiner Tour. Gestartet bin ich mit einem Rundgang der Zitadelle. Leider konnte ich nicht das innere Sehen ,da sie aufgrund eines kleines Konflikts zwischen Stadt und Eigentümer vorübergehend geschlossen. Die Zitadelle liegt höher als Budapest selber, sodass mir von hier einige schöne Ausblicke gewärt worden sind. An der Zitadelle gelegen ist die Freiheitsstatue von Budapest, die für die Befreiung Ungarns im 2.ten Weltkrieg zur Ehrung der Soldaten errichtet worde ist. Gefallen hat mir auch der Burgpalast in mitten der Stadt. Dieses riesige Gebäude hinterlässt eine beeinträchtgenden  Eindruck. Budapest ist eine sehr schöne Stadt und ich freue mich schon auf den nächsten Besuch. Alle meine Bilder von Budapest gibt es hier zu sehen.