Ostatnio przeszedłem z AdoDB na PDO. Napisałem (z pomocą tutejszych forumowiczów

Kod
<?php class Database{
protected $db;
public function __construct(){
$this->db=new Pdo('mysql:host=localhost;dbname=siatka','root','jo');
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function sql($query,$return='exec',$binds=null){
$sql=$this->db->prepare($query);
if($binds!=null){
if(is_array($binds)){
foreach($binds as $n => $bind)
$sql->bindValue(($n+1), $bind);
} else
$sql->bindValue(1, $binds);
}
if($sql->execute()){
# włączenie tablic jedynie asocjacyjnych
# if($return!='exec') $sql->setFetchMode(PDO::FETCH_ASSOC);
switch($return){
case 'all':
return $sql->fetchAll();
break;
case 'one':
return $sql->fetchColumn();
break;
case 'row':
return $sql->fetch();
break;
case 'id':
return $this->db->lastInsertId();
break;
}
} else
return false;
}
}
$db=new Database();?>
protected $db;
public function __construct(){
$this->db=new Pdo('mysql:host=localhost;dbname=siatka','root','jo');
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function sql($query,$return='exec',$binds=null){
$sql=$this->db->prepare($query);
if($binds!=null){
if(is_array($binds)){
foreach($binds as $n => $bind)
$sql->bindValue(($n+1), $bind);
} else
$sql->bindValue(1, $binds);
}
if($sql->execute()){
# włączenie tablic jedynie asocjacyjnych
# if($return!='exec') $sql->setFetchMode(PDO::FETCH_ASSOC);
switch($return){
case 'all':
return $sql->fetchAll();
break;
case 'one':
return $sql->fetchColumn();
break;
case 'row':
return $sql->fetch();
break;
case 'id':
return $this->db->lastInsertId();
break;
}
} else
return false;
}
}
$db=new Database();?>
No i teraz, jeżeli np. z tabeli users chcę pobrać wiersz, gdzie login = $_POST['login'], piszę takie coś:
Kod
<?php $db->sql("SELECT * FROM users WHERE login=?","row",$_POST['login']);?>
. Dla rodzaju returnowania exec - nic nie jest zwracane. Służy to tylko do wykonywania działań na bazie: insert, update, delete.Zamierzałem jakoś zoptymalizować tą klase - tj. rozbić jakoś rodzaj returnowania, zrobić osobne funkcje na returnowanie wiersza, wszystkiego, rekordu... Wtedy aby pobrać wiesz, napisalibyśmy np. $db->getRow("SELECT * FROM users WHERE id=1"). Proszę o jakieś pomysły jak tą klasę nieco zoptymalizować

Może macie jakieś swoje, z których korzystacie? Albo jakieś gotowe klasy, które można pobrać z neta?