Beste PHPers,

Vandaag heb ik maar eens besloten om over te stappen naar PDO, inplaats van mysql.

Ik heb nu een kleine code om de configuratie uit de database te halen, alleen wil een nette error afhandeling bouwen.

index.php

<?php
include "includes/sessioninit.php";
include "includes/dbcon.php";

$id = "1";

$stmt = $db->prepare("SELECT * FROM `site_config` WHERE `id` = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_STR, 32);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

$configid = $result['id'];
$sitename = $result['sitename'];

echo $configid . "<br />" . $sitename;

?>


Via deze code maak ik een connectie naar de database:


<?php
// Database Information
$hostname = "localhost";
$username = "root";
$password = "root";
$database = "pdo_leren";

try {
     $db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch(PDOException $e) {
    echo $e->getMessage();
}
?>


Maar nu als ik een foute tabel naam ingeef krijg ik geen errors te zien, Ik wil hier graag een nette fout afhandeling voor bouwen.

Heb dit ook gepbrobeerd, maar kreeg ook hier geen errors:


$id = "1";
try {
 $stmt = $db->prepare("SELECT * FROM `dezetabelnaambestaatlekkerniet` WHERE `id` = :id");
 $stmt->bindParam(':id', $id, PDO::PARAM_STR, 32);
 $stmt->execute();
  $result = $stmt->fetch(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    echo $e->getMessage();
}


Ik ben deze guide/tutorial aan het doornemen, en zie het daar niet vermeld om een nette fout afhandeling voor mysql acties. (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)

Hopelijk zou iemand mij hier mee kunnen helpen aangezien ik net begonnen ben :)
Gebruik dan alleen geen PDO:ERRMODE_WARNING, maar PDO::ERRMODE_EXCEPTION.

Zoals onderaan in het artikel ook geadviseerd wordt:

Ik zou aanraden om de Exception te gebruiken als foutafhandeling. Je gebruikt de try/catch syntax immers toch al om te controleren of de verbinding gelukt is. Daarnaast krijg je alle opvolgende foutmeldingen die het gevolg zijn van een foute query niet te zien en kun je helemaal zelf bepalen welke informatie je wel wilt tonen.
Bedankt voor de reacties, ben al een stukje verder, maar zit met een klein probleempje.

Ik wil graag de configuratie uit de mysql database halen via deze methode:

website.class.php

<?php
include 'databaseconnectie.php';

class website {
    function __construct() {
        $this->config();
    }
    function config() {
        global $db;
        
        $sql = "SELECT id FROM config WHERE id = 1";
        $stmt = $db->prepare($sql);
        $stmt->execute();
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo $row['id'];
        }
    }
}
?>


in databaseconnectie.php bestand heb ik

<?php
try {
    $db = new PDO('mysql:host=localhost;dbname=website', 'root', 'root');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo '<pre>';
    echo 'Regel: ' . $e->getLine().'<br />';
    echo 'Bestand: '.$e->getFile().'<br />';
    echo 'Foutmelding: '.$e->getMessage();
    echo '</pre>';
}
?>


Alleen de configuratie wordt niet geladen, en de id van de config word niet weer gegeven..

In phpmyadmin geeft hij duidelijk 1 resultaat aan, alleen deze geeft ie niet weer zodra ik het met de bovenstaande code probeer op te vragen.

Doe ik iets verkeerd?

Met vriendelijke groet,
Robert-Jan

[size=xsmall]Toevoeging op 05/09/2013 16:27:29:[/size]

Sorry, Ik was dus vergeten om de class nog te laden...


<?php
$website = new website();
?>


Dat werkte :D

Reageren