Chciałbym poddać ocenie napisany dziś obiekt, który ma mi ułatwić i przyśpieszyć akcje związane z bazą danych.
Podkreślam ,że dopiero rozpoczynam przygodę z programowaniem obiektowym.
Głównie chodzi mi o ocenę wydajnośći skryptu. - Nie wiem czy lepiej być stale połączonym z bazą czy co chwile otwierać nowe połączenia(tak jak w klasie).
W kodzie może być malutki bałagan ale wszyscy wiemy jak coś wygląda gdy robi się to po dniu pracy.
Funkcje:
-insert
-update
-select
Wszystko POWINNO chodzić sprawnie.
class dataBase {
private $_host = null;
private $_database = null;
private $_username = null;
private $_password = null;
public function __construct(){
$nn = new Hconfig;
$data = $nn->dbConf();
$this->_host = $data['host'];
$this->_database = $data['db'];
$this->_username = $data['username'];
$this->_password = $data['password'];
}
public function insert($table, $fields, $values, $params){
$table = '`'.$table.'`';
if($cf != $cv) { echo 'Podano złe parametry';} for($i=0;$i<$cf;$i++){$qf .= '`'.$fields[$i].'`, ';}
for($i=0;$i<$cv;$i++){$vf .= ':'.$fields[$i].', ';}
try{
$pdo = new PDO('mysql:host='.$this->_host.';dbname='.$this->_database.'', ''.$this->_username.'', ''.$this->_password.'');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('INSERT INTO '.$table.' ('.$qf.') VALUES ('.$vf.')');
for($i=0;$i<$cf;$i++) {
$stmt->bindValue($vfe[$i], $values[$i], $params[$i]);
}
$status = $stmt->execute();
return $status;
$stmt -> closeCursor();
}
catch(PDOException $e){
}
}
public function update($table, $fields, $values, $params, $where){
if(empty($where)) {$wh = '';} else {$wh = 'WHERE ('.$where.')';}; $table = '`'.$table.'`';
if($cf != $cv) { echo 'Podano złe parametry';} for($i=0;$i<$cf;$i++){$qf .= '`'.$fields[$i].'`, ';}
for($i=0;$i<$cv;$i++){$vf .= ':'.$fields[$i].', ';}
for($i=0;$i<$cf;$i++){$ustring .= '`'.$fields[$i].'`='.$vfe[$i].', ';}
$ustring = substr($ustring,0
,-2
); try{
$pdo = new PDO('mysql:host='.$this->_host.';dbname='.$this->_database.'', ''.$this->_username.'', ''.$this->_password.'');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('UPDATE '.$table.' SET '.$ustring.' '.$wh.'');
for($i=0;$i<$cf;$i++) {
$stmt->bindValue($vfe[$i], $values[$i], $params[$i]);
}
$status = $stmt->execute();
return $status;
$stmt -> closeCursor();
}
catch(PDOException $e){
}
}
public function select($from, $fields, $where, $sort){
if(empty($where)) {$wh = '';} else {$wh = 'WHERE ('.$where.')';}; if(empty($sort)) {$srt = '';} else {$srt = 'SORT BY ('.$sort.')';}; $table = '`'.$table.'`';
try{
$pdo = new PDO('mysql:host='.$this->_host.';dbname='.$this->_database.'', ''.$this->_username.'', ''.$this->_password.'');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo -> query('SELECT '.$fields.' FROM '.$from.' '.$wh.' '.$srt.'');
return $stmt;
$stmt -> closeCursor();
}
catch(PDOException $e){
}
}
}
Podkreślam, że póki co w programowaniu obiektowym raczkuje... Przyjmuje na klatę całą krytykę i sugestie na które niecierpliwie czekam.
Przykład zastosowania:
$posio = new dataBase;
$test = $posio->insert('users', 'id, login, password, email', ', testlogin, testpassword, testmail', '1, 2, 2, 2');
if($test > 0
) { echo 'Dane zostały dodane'; }
Ten post edytował Posio 16.06.2012, 17:56:19