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