Hi everyone,
I am trying to use a separate class for DB access, instantiating an object of this class in every script that needs DB access. Here is the class:
<?php
require_once('SysteemComponenten.php');
class DbConnector extends SysteemComponenten {
var $query;
var $link;
//functie voor databaseconnectie
function DbConnector() {
// Laad settings uit parent class
$settings = SysteemComponenten::getSettings();
$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpassword'];
//connect met de database
$this->link = mysql_connect($host, $user, $pass) or die('Connectie mislukt');
mysql_select_db($db) or die('Database niet gevonden');
register_shutdown_function(array(&$this, 'close'));
}
//functie om een query uit te voeren
function query($query) {
$this->query = $query;
return mysql_query($query, $this->link) or die("<b>Het systeem veroorzaakte een MySQL error</b>.\n<br />Query: " . $query . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());
}
//functie om array te maken van query resultaat
function fetchArray($result) {
return mysql_fetch_array($result);
}
//functie om connectie te sluiten
function close() {
mysql_close($this->link);
}
}
?>
For some reason however, it doesn't seem to work properly. For example in this test script, I can get the query to return a mysql resource, but I can't get any data out of it (mysql_fetch_array returns empty, while the table isn't empty)
<?php
require_once('./includes/DbConnector.php');
$connector = new DbConnector();
$result = $connector->query('SELECT voornaam FROM lid ORDER BY voornaam DESC');
echo $result;
$row = $connector->fetchArray($result);
echo $row;
while ($row = $connector->fetchArray($result))
{
echo $row['voornaam'];
}
?>
Thanks for your comments, I really appreciate it.