![]() |
![]() |
![]()
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: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat No nie zbinduje Zamiast $binds!=null daj: $binds!==null i juz zbinduje Cytat A znasz może jakąś gotową prostą bibliotekę (klasę) do obsługi PDO PDO samo w sobie jest klasą i nadaje sie do uzywania. Jedyna nakładkę jaką widziałem była napisana przez Zyx ale nie jest juz rozwijana bo ktos wydal podobno lepszą (o czym sam pisał Zyx). Ja używam własnej, ale mocno zintegrowanej z moim systemem, wiec nic tu po niej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 08:51 |