Ik hoop dat iemand mij kan helpen in het connecten met mijn database volgens PDO.
Ik wil graag in mijn template een PDO verbinding maken om zo data op te roepen en direct te kunnen verwerken in mijn template.
Dit werkt 100% zonder problemen op de oude Mysql_query manier, echter bij PDO gaat het mis.
Hier krijg ik constant de foutmelding:
Fatal error: Call to a member function query() on a non-object in layout.php on line 88..
(de PDO aanroep van de naam uit de tabel gebruikers
Dezelfde aanroep kan ik wel uitvoeren in de index.php zonder probleem en vervolgens het resultaat aanroepen in de layout.php
Echter wil ik graag net zoals het werkte met mysql_query graag in de layout.php ook de pdo connectie kunnen aanroepen en ook daar dingen uit de database kunnen halen.
Hieronder heb ik uitgewerkt hoe ik de connecties heb liggen tussen mijn database, config bestand, template bestand en index.php
Ik hoop dat iemand me kan helpen / in de juiste richting kan sturen hoe ik alsnog via PDO een verbinding kan aanroepen vanuit de layout.php (mijn template bestand).
Ik heb uiteraard eerst gezocht op het internet, daarbij veel bronnen tegengekomen over PDO en diens connectie wijze. Een eigen query functie getracht te maken, echter liep alles constant op het zelfde uit de foutmelding zoals hierboven.
Fatal error: Call to a member function query() on a non-object in layout.php on line 88..
/* Database connectie */
database.php
/* PDO Database connectie */
$dbv = array (
'host' => 'host',
'dbname' => 'dbnaam',
'user' => 'gebruikersnaam',
'pass' => 'wachtwoord'
);
try
{
$db = new PDO('mysql:host='.$dbv['host'].';dbname='.$dbv['dbname'], $dbv['user'], $dbv['pass']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
$sMsg = '<p>
Regelnummer: '.$e->getLine().'<br />
Bestand: '.$e->getFile().'<br />
Foutmelding: '.$e->getMessage().'
</p>';
trigger_error($sMsg);
file_put_contents('PDOErrors.txt', $sMsg, FILE_APPEND);
die();
}
/* Einde database connectie */
/* Mijn config bestand */
config.php
/* Database connectie aanroepen */
include_once('database.php');
/* Mijn template */
require_once ('layout.php');
/* Einde config bestand */
/* Mijn index bestand */
index.php
session_start();
/* config aanroepen waar ook de database connectie in aangeroepen wordt */
require_once('config.php');
/* Mijn template aanroepen voor de grafische schil */
$l = new Layout();
/* Hier een PDO connectie aanroepen gaat zonder problemen */
/* Hier heb ik al geprobeerd data door te zetten op dezelfde wijze als b.v. content hieronder, dat werkt. Echter wil ik graag de data rechtstreeks in de template kunnen aanroepen en ophalen via een PDO connectie */
/* Mijn output die ik weer aanroep in de template*/
$l->content = 'tekst e.d. hier';
$l->contentheight = '375px';
$l->display();
/* Mijn template */
layout.php
class Layout {
var $this;
var $content;
var $contentheight;
function display()
{
$doctype = '';
$head ='';
$body =''
/* Hier wil een PDO connectie aanroepen */
$sql = "SELECT naam FROM gebruiker WHERE id = '1'";
$result = $db->query($sql);
$rijen = $result>fetchAll(PDO::FETCH_ASSOC);
foreach ($rijen as $rij) {
$body .='gebruikersnaam: '.$rij['naam'].'<br />';
}
$main = $doctype.$head.$head;
return $main;
}
}
/* Einde template */