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_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.
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):
$result = $db->query( $sql );
Aantal rijen berekenen (voorbeeld):
$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();
?>