Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Moja klasa do obsługi MySQL pod PDO, proszę o oceny i pomysły co do zmian :)
Apocalyptiq
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Witam!

Ostatnio przeszedłem z AdoDB na PDO. Napisałem (z pomocą tutejszych forumowiczów 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ć 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


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post

Posty w temacie
- Apocalyptiq   [PHP]Moja klasa do obsługi MySQL pod PDO   17.11.2008, 13:08:58
- - nospor   1) uzyj poprawnego bbcode 2) Przenosze. Z mysql to...   17.11.2008, 13:18:07
- - dr_bonzo   A co jak mam inna nazwe klasy, usera, hasla?   17.11.2008, 13:21:28
- - nospor   kolejna podstawa: [PHP] pobierz, plaintext <?ph...   17.11.2008, 13:28:50
- - Apocalyptiq   No nie zbinduje :/ A znasz może jakąś gotową pros...   17.11.2008, 15:11:56
- - nospor   CytatNo nie zbinduje Zamiast $binds!=nul...   17.11.2008, 15:17:25
- - Apocalyptiq   Dzięki nospor za wskazówki, i to z bindem null J...   17.11.2008, 15:30:36
- - nospor   jedna funkcja, ktora robi wszystko to "ble...   17.11.2008, 15:34:05
- - Apocalyptiq   A jak ustawić, aby te metody korzystały z tej jedn...   17.11.2008, 16:06:57
- - dr_bonzo   Cytatczy przy każdej z tych pomniejszych metod trz...   17.11.2008, 16:35:49
- - Apocalyptiq   No ale tą klasę piszę do działania na jednej bazie...   17.11.2008, 16:48:55
- - nospor   no ale powiedzmy ze te klase dasz koledze. On bed...   17.11.2008, 17:03:01
- - erix   CytatPS. Jakby w tej klasie jeszcze coś by...   17.11.2008, 17:07:25
- - Apocalyptiq   a jak sie wypluwa wyjątki?   17.11.2008, 19:32:32
- - erix   exceptions" title="Zobacz w manualu PHP" target="_...   17.11.2008, 19:46:25
- - Apocalyptiq   A jak to wsadzić do takiej bazy? W wikibooks widzi...   17.11.2008, 19:54:08
- - megawebmaster   Bo wyjątki się wypluwa wtedy, kiedy nie może dalej...   17.11.2008, 20:23:58
- - Apocalyptiq   Zmodyfikowałem klasę co do wyjątków: Kod<?php...   18.11.2008, 11:18:35


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 17:50