PDA

View Full Version : PDO objects or not?


nikos101
10-22-2007, 01:59 PM
I was wondering how many of you used PDO objects to connect to MySql databases instead of the non PDO php functions.

PDO code example

<?php
class SystemComponent {
var $settings;
/*
return system settings
*/
function getSettings() {
// System variables
.
.
.
.
.
.
.
.
return $settings;
}
}

class DbConnector extends SystemComponent {
var $dbc;
/*
constructor, Purpose: connect to the database
*/
function __construct(){
// Load settings from parent class
$settings = SystemComponent::getSettings();
// Connect to the database
try {
$this->dbc = new PDO($settings['dbdriver'] . ':host=' . $settings['dbhost'] . ';dbname=' . $settings['dbname'], $settings['dbusername'], $settings['dbpassword']);
$this->dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'DATABASE ERROR: ' . $e->getMessage();
}
}
/*
destructor, Purpose: close the connection
*/
function __destruct() {
$this->dbc = null;
}
}

class DbPrepared extends DbConnector {
private $stmt;
/*
Function: selectAll, Purpose: execute a select query and returns results array
$sql = select query with ? placeholders for parameters
$params = parameter array
*/
public function selectAll($sql,$params) {
try {
$this->stmt = $this->dbc->prepare($sql);
$this->stmt->execute($params);
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo 'DATABASE ERROR: ' . $e->getMessage();
}
}
/*
Function: editData, Purpose: run an insert/update/delete query and return rows affected
$sql = select query with ? placeholders for parameters
$params = parameter array
*/
public function editData($sql,$params) {
try {
$this->dbc->beginTransaction();
$this->stmt = $this->dbc->prepare($sql);
$this->stmt->execute($params);
$this->dbc->commit();
return $this->stmt->rowCount();
}
catch(PDOException $e) {
$this->dbc->rollBack();
echo 'DATABASE ERROR: ' . $e->getMessage();
}
}
}
?>