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
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


oprócz zastrzeżeń to nie wiele więcej zostaje, najlepiej używaj PDO, bo właśnie bo to jest, żebyś nie musiał pisać jakiejś beznadziejnej klasy, przede wszystkim to masz luki SQL Injection, po drugie nie daje się żadnego die() w przypadku błędu, poza tym taka metoda jest mało praktyczna jak pobieranie z jednej tabeli
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: 8.10.2025 - 12:04