![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam!
Ostatnio przeszedłem z AdoDB na PDO. Napisałem (z pomocą tutejszych forumowiczów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) taką klasę: 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();?> 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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Może macie jakieś swoje, z których korzystacie? Albo jakieś gotowe klasy, które można pobrać z neta? Ten post edytował nospor 17.11.2008, 13:23:37 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
A jak to wsadzić do takiej bazy? W wikibooks widziałem zastosowanie tego exception, ale tam całe połączenie z bazą, zapytanie itp. bierze się w klamrę - a tu wszystko mam osobno, więc jak to zrobić?
Kod public function exec($query, $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); } try{ $sql->execute(); } catch(PDOException $e) { echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage(); } I do czego w ogóle służy to wypluwanie wyjątków? Teraz, jak coś jest nie tak, po prostu wywalany mam błąd, tylko że dalsza część kodu wtedy nie jest wykonywana. Ten post edytował Apocalyptiq 17.11.2008, 20:09:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 22:20 |