Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do połączeń i zapytań SQL
Zagiewa
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

Ostrzeżenie: (0%)
-----


Witam. Chcę stworzyć klasę do połączenia SQL w której będą też metody do zapytań jednak zależy mi na stworzeniu bardzo wydajnej klasy, a co więcej, żeby cały kod był dobrej jakości dlatego też ja mam pomysł i jakiś zalążek wiedzy, wy za to duże doświadczenie więc liczę, że mi trochę pomożecie (IMG:style_emoticons/default/smile.gif) Głównym motywem na chwile obecną jest stworzenie metod, które będą generowane w zależności od tego co będziemy chcieli osiągnąć. Poniżej zamieszczę kod, który do tej pory napisałem, a pod nim pytania.

  1. <?php
  2.  
  3. class connection {
  4.  
  5. private $DB;
  6.  
  7. function __construct($DB_in) {
  8.  
  9. $this->DB = $DB_in;
  10. }
  11.  
  12. public function SQL_connect() {
  13.  
  14. include('static.php');
  15.  
  16. $sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or
  17. die("Sprawdź połączenie z serwerem! " . mysql_error());
  18. mysql_query("SET NAMES 'utf8'");
  19.  
  20. mysql_select_db($this->DB, $sql) or
  21. die("Sprawdź bazę! " . mysql_error());
  22. }
  23.  
  24. public function select_table($what_in, $from_in) {
  25.  
  26. $pobierz = "SELECT $what_in FROM $from_in";
  27. $result = mysql_query($pobierz) or
  28. die("Sprawdź rezultat! " . mysql_error());
  29.  
  30. while($row = mysql_fetch_array($result)) {
  31.  
  32. $a = $row[$what_in];
  33. echo $a. "<br />";
  34. }
  35. }
  36. }
  37.  
  38. ?>

  1. <?php
  2.  
  3. include('class.php');
  4. $connect = new connection("nazwa_bazy");
  5. $connect->SQL_connect();
  6. $connect->select_table("id", "nazwa_tabeli");
  7.  
  8. ?>

1. Chciałem aby można było za pomocą jednej metody łączyć się z różnymi bazami dlatego zanim wywołamy metodę SQL_connect() dzięki konstruktorowi podajemy, która baza nas interesuje. Teraz pytanie czy rozwiązanie to jest dobre? Czy może lepiej było by usunąć konstruktor i nazwę bazy podać bezpośrednio do metody czyli: SQL_connect("nazwa_bazy")?
2. Jak wiadomo zanim wykonamy jakiekolwiek operacje na tabelach w bazie trzeba się połączyć z bazą więc łączenie z SQL MUSI się odbyć prawda? więc zastanawiam się czy by nie zrezygnować z metody SQL_connect() i całość kodu wstawić w konstruktor wyglądało by to tak:
  1. function __construct($DB_in) {
  2.  
  3. $this->DB = $DB_in;
  4.  
  5. include('static.php');
  6.  
  7. $sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or
  8. die("Sprawdź połączenie z serwerem! " . mysql_error());
  9. mysql_query("SET NAMES 'utf8'");
  10.  
  11. mysql_select_db($this->DB, $sql) or
  12. die("Sprawdź bazę! " . mysql_error());
  13. }

Ma to sens? Mam jeszcze pytania odnośnie metody select_table() ale to innym razem. Jeśli macie ew. jakieś zastrzeżenia co do tego kodu to piszcie. Z góry dzięki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zagiewa
post
Post #2





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

Ostrzeżenie: (0%)
-----


Dziś już jestem zbyt zmęczony na dalsze pisanie kodu więc wolę jutro się tym zająć ale odnośnie tego co napisaliście:

mg2 - "Z bazą łączysz się, jeżeli chcesz wykonać zapytanie a nie jesteś z nią połączony;)" masz racje, źle to sformułowałem.
Napisałeś też abym nie robił klas tylko bezpośrednio korzystał z PDO masz na myśli żebym wklepywał PDO bezpośrednio w kod wszędzie tam gdzie będę potrzebował wysłać zapytanie do bazy? jeśli tak to takie rozwiązanie jest myślę mało efektowne bo gdy okaże się, że mam błąd to będę musiał uruchamiać "x" plików w których użyłem PDO aby poprawić błąd. Gdy będzie on w klasie bądź nawet funkcji którą includuje wystarczy, że zmienię raz.

"... Już chyba lepiej byłoby te dane bazy podać konstruktorowi tej klasy jako argumenty." - czy nie jest bezpieczniej gdy one leżą sobie gdzieś w pliku jako stałe?

darko - "Dziedzicz po klasie PDO dodając jakieś pożądane funkcjonalności, a nie robisz kompozycję." Nie bardzo rozumiem co masz na myśli. A co do mysql_real_escape_string() to by tłumaczyło dlaczego wyskakiwał mi ten błąd (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- Zagiewa   Klasa do połączeń i zapytań SQL   22.02.2011, 16:41:40
- - tehaha   oprócz zastrzeżeń to nie wiele więcej zostaje, naj...   22.02.2011, 18:45:30
- - Zagiewa   Z tym PDO to już jakiś standard? tzn zawsze się te...   22.02.2011, 22:19:07
- - tehaha   1. PDO po prostu został stworzony do obsługi bazy ...   22.02.2011, 22:34:30
- - Zagiewa   Ad.2 Fakt zapomniałem kompletnie o tym, dzięki Ad....   22.02.2011, 22:52:42
- - tehaha   dam Ci jedną radę jak pojawia Ci się jakiś błąd i ...   22.02.2011, 23:04:10
- - Zagiewa   I owszem zrobiłem tak zanim napisałem na forum i w...   22.02.2011, 23:09:06
- - mg2   Obiekt $pdo jest połączeniem do bazy. Rozłącz...   23.02.2011, 01:51:40
- - darko   Dziedzicz po klasie PDO dodając jakieś pożądane fu...   23.02.2011, 01:59:13
- - Zagiewa   Dziś już jestem zbyt zmęczony na dalsze pisanie ko...   23.02.2011, 02:22:29
- - d3ut3r   PDO to właśnie klasa której powinieneś używać, nie...   23.02.2011, 02:51:25
- - Zagiewa   d3ut3r - dokładnie o to mi chodzi. Chcę aby PDO by...   23.02.2011, 17:17:51
- - greycoffey   Tak, szukałeś, ja tu widzę rozwianie.. Kliknij...   23.02.2011, 19:22:00
- - Zagiewa   greycoffey - piękna animacja, podoba mi się jednak...   23.02.2011, 19:30:45
- - darko   Zdaje się, że ta linia [PHP] pobierz, plaintext $s...   24.02.2011, 04:05:59
- - Zagiewa   darko dobrze kombinujesz i też tak próbowałem... j...   24.02.2011, 12:16:41
- - darko   Racja oczywiście nie wolno parametryzować nazw tab...   24.02.2011, 13:55:55
- - Zagiewa   OK zgodzę się z tym, że bindowanie ma na celu zabe...   24.02.2011, 14:13:23
- - darko   Efekt, o który pytasz uzyskuje się za pomocą metod...   24.02.2011, 14:22:13
- - Zagiewa   Więc twierdzisz, że się da stworzyć taki schemat? ...   24.02.2011, 14:33:47
- - darko   Mam wrażenie, że sam sobie nieco utrudniasz życie....   24.02.2011, 15:59:50
- - Zagiewa   darko masz racje można wstawić w zapytanie zmienne...   24.02.2011, 16:41:44


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

 



RSS Aktualny czas: 13.10.2025 - 08:04