Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] PDO
Majkelo23
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


Witam!

Próbuję pojąć PDO. We wszystkich tutoriali w necie wynika, że ile razy wykonujemy zapytanie - tyle razy należy się łączyć z bazą danych... Wydaje mi się, że raczej tak nie jest bo to byłoby niewygodne.

Czy wykonanie takiego kodu:
  1. try
  2. {
  3. $db = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_DATABASE.';encoding=utf8', DB_USERNAME, DB_PASSWORD);
  4. }
  5. catch(PDOException $e)
  6. {
  7. die('Połączenie nie mogło zostać utworzone: ' . $e->getMessage());
  8. }]


RAZ wystarczy, aby nawiązać połączenie, a potem można się już swobodnie odwoływać do zmiennej $db, np:
  1. $sql = $db->exec("SELECT * FROM `oop_users` WHERE username = '".$username."' OR user_email = '".$email."'");
  2. if ( $sql > 0 )
  3. {
  4. return FALSE;
  5. }
  6. else
  7. {
  8. return TRUE;
  9. }

?
Czy raczej powinienem to zapisać tak:

  1. try
  2. {
  3. $db = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_DATABASE.';encoding=utf8', DB_USERNAME, DB_PASSWORD);
  4. $sql = $db->exec("SELECT * FROM `oop_users` WHERE username = '".$username."' OR user_email = '".$email."'");
  5. if ( $sql > 0 )
  6. {
  7. return FALSE;
  8. }
  9. else
  10. {
  11. return TRUE;
  12. }
  13. }
  14. catch(PDOException $e)
  15. {
  16. die('Połączenie nie mogło zostać utworzone: ' . $e->getMessage());
  17. }]


czyli co zapytanie, powtarzać cały scenariusz dot. łączenia się z bazą, wykonywania zapytań, zwracania ew. błędów itd. ?

Ten post edytował Majkelo23 23.10.2013, 07:19:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Majkelo23
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


Wszystko spoko, ale moja tępota w temacie OOP nadal robi swoje... (IMG:style_emoticons/default/wink.gif)

db.class.php:

  1. class db
  2. {
  3. function __construct()
  4. {
  5. try
  6. {
  7. $db = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_DATABASE.';encoding=utf8', DB_USERNAME, DB_PASSWORD);
  8. }
  9. catch(PDOException $e)
  10. {
  11. die('Połączenie nie mogło zostać utworzone: ' . $e->getMessage());
  12. }
  13. }
  14. }


common.php:

  1. <?php
  2. include('includes/db.class.php');
  3. $db = new db();
  4. include('includes/users.class.php');
  5.  
  6. ?>


index.php:
  1. <?php
  2. include('common.php');
  3. $user = new user($db);
  4.  
  5. if ( $user->check_values('Majkelo', 'email@gmail.com') )
  6. {
  7. echo 'istnieje';
  8. }
  9. else
  10. {
  11. echo 'nie istnieje';
  12. }
  13.  
  14. ?>


i część klasy users.class.php:

  1. class user
  2. {
  3. private $db;
  4.  
  5. function __construct($db)
  6. {
  7. $this->db = $db;
  8. }
  9.  
  10. public function check_values($username, $email)
  11. {
  12. if ( !$this->validate_email($email) )
  13. {
  14. return FALSE;
  15. }
  16. else if ( !$this->validate_username($username) )
  17. {
  18. return FALSE;
  19. }
  20.  
  21. // sprawdzamy czy podany nick lub email juz istnieje w bazie
  22. try
  23. {
  24. $sql = $this->db->exec("SELECT * FROM `oop_users` WHERE username = '".$username."' OR user_email = '".$email."'");
  25. if ( $sql > 0 )
  26. {
  27. return TRUE;
  28. }
  29. else
  30. {
  31. return FALSE;
  32. }
  33. }
  34. catch(PDOException $e)
  35. {
  36. die('Połączenie nie mogło zostać utworzone: ' . $e->getMessage());
  37. }
  38. }


efekt wywolania index.php:


Fatal error: Call to undefined method db::exec() in /home/majkelo/public_html/OOP/includes/users.class.php on line 50

Co znowu pomyliłem?
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 03:26