PHP databases

Database handler module voor PHP

Search

Database handler in PHP

Database gegevens ophalen in PHP. Een van de sleutel modules die nodig is voor het ontwikkelen van PHP applicaties. Al Googelend kwam ik wel het een en ander tegen wat ik soms kon gebruiken, sommige zaken waar ik van kon leren, maar nooit echt een systeem dat ik gelijk in kon zetten en dat makkelijk, veilig en eenvoudig uit te breiden was. Ten langen leste besloot ik daarom maar zelf zo'n systeem te maken.

 

Database connect gegevens

Hiervoor is een bestandje nodig, laten we die constants.php noemen. Hierin staan alle gegevens voor het kunnen connecten met een MYSQL database.

define("DB_SERVER", "*****"); // naam van de server. Standaard: localhost
define("DB_USER", "*****"); // gebruikersinlog naam
define("DB_PASS", "*****"); // database wachtwoord
define("DB_NAME", "*****"); // naam van de database

Dit bestand dient gevuld te worden met alle relevante gegevens, en daarna geupload naar de server.

 

De basis is klaar. Nu: de database handler klasse.

Dit is een stuk PHP software code, die een klasse definieren. Hierna koppelen we er een aantal functies aan.

public function __construct()

 

Deze functie wordt standaard uitgevoerd op het moment dat de db klasse wordt gedefinieerd. Deze functie zorgt dan voor de database verbinding met de gegevens die we hebben gedefinieerd in constants.php. Daarna hebben we nog drie functies: de query functie, een functie die het aantal rijen telt dat een query oplevert, en een error handler. Op het moment dat een query een fout geeft, wordt automatisch de functie error aangeroepen die precies aangeeft welke fout er in onze query staat.

In onderstaande code worden nu automatisch de database gegevens ingevuld, en zijn de functies beschikbaar.

 

Voorbeeld gebruik van de database handler

Ophalen van gegevens (voorbeeld):

$sql =  "SELECT * FROM test_tabel";
$result = $db->query( $sql );

 

Aantal rijen berekenen (voorbeeld):

$sql =  "SELECT * FROM test_tabel";
$result = $db->num_rows( $sql );

 

Uiteraard dien je voor test_tabel je eigen tabel in te voeren die je gebruikt om de gegevens op te slaan.

 

De hele code

Hier te downloaden als zip bestand. In de zip staat voorbeeld constantes file en de db class file.

<?

class Db { 

var $HOST = DB_SERVER;

var $USERNAME = DB_USER;

var $PASSWORD = DB_PASS;

var $DB_NAME = DB_NAME;

var $SQL;

var $CONNECTION;

var $RESOURCE;

var $NUM_ROWS;

var $ERRMSG;

var $debug = true;

 

public function __construct()

$this->CONNECTION = mysql_connect($this->HOST, $this->USERNAME, $this->PASSWORD) or die( $this->ERROR("Kan geen verbinding maken met de Database") ); 

mysql_select_db($this->DB_NAME) or die( $this->ERROR("Geen Database gevonden") );

 

return $this->CONNECTION;

}

 

public function query( $sql )

{

$this->SQL = $sql;

$this->RESOURCE = mysql_query( $this->SQL, $this->CONNECTION ) or die( $this->ERROR() );

 

return $this->RESOURCE;

}

 

public function num_rows( $sql )

{

$this->SQL = $sql;

$this->RESOURCE = mysql_query( $this->SQL, $this->CONNECTION ) or die( $this->ERROR() );

$this->NUM_ROWS = mysql_numrows($this->RESOURCE);

 

return $this->NUM_ROWS;

}

 

function error($msg='')

{

                        $this->ERRMSG = mysql_error( $this->CONNECTION );

                        if( empty($this->ERRMSG) )

                        {

                                if( empty($msg) )

                                {

                                        return false;

                                }

                                else

                                {

                                        $s = $msg;

                                }

                        }

                        else

                        {

$output  = $msg;

$output .= '<div style="border: 1px solid #999;font-family:Verdana, Arial, Helvetica, sans-serif;font-size: 12px;"><div style="background: #999; color: #fff;">Debug Trace</div>';    

$output .= '<p style="padding: 5px;">';

 

$output .= "<b>SQL: </b>".$this->SQL."<br />";

$output .= "<b>Error: </b>".$this->ERRMSG."<br /><br />";

$info = debug_backtrace();

$output .= '<table style="line-height: 15px;font-size:12px;border: 1px solid #999;"cellspacing=0 cellpadding=0 width="700px"><tr><td colspan="2" style="text-align:center;border-bottom: 1px solid #999; background: #ececec;">PHP trace</td></tr><tr><td style="border-right: 1px solid #999; background: #ececec;" valign="top">';

foreach($info as $err_idx=>$err_row)

{

$output .= "<tr><td style='border-right: 1px solid #999; background: #ececec;' valign='top' rowspan='4' width='45'>$err_idx</td></tr>";

$output .= "<tr><td>File:".$err_row["file"]."</td></tr>";

$output .= "<tr><td>Line:".$err_row["line"]."</td></tr>";

$output .= "<tr><td style='border-bottom: 1px solid #999;'>Function:".$err_row["function"]."</td></tr>";

}

$output .= "</table>";

$output  .= '</p></div></div><br />';

 

                        }

                        if( $this->debug )

                        {

                                echo $output;

                        }

}

}

$db = new Db(); 

?>