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





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Witam. Zapoznaj się też z innym rodzajem połączenia.
np takim
  1. class DBBER extends PDO
  2. {
  3. private $engine = 'mysql';
  4. private $host = 'localhost';
  5. private $port = 3306;
  6. private $database = 'pdo';
  7. private $user = 'root';
  8. private $pass = ''; // password
  9. private $dns;
  10. private $DbPrefix = 'prk_';
  11.  
  12.  
  13.  
  14. public function __construct()
  15. {
  16. try{
  17. if(!empty($this->database))
  18. {
  19. $this->dns = $this->engine.':host='.$this->host.';port='.$this->port.';dbname='.$this->database.';';
  20. parent::__construct($this->dns, $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
  21. }
  22.  
  23. }catch(PDOException $e){
  24. echo 'The connection could not be established.<br />'.$e->getMessage().'<br />'.strval($e->getCode()).'<br />'.$e->getFile().'<br />'.
  25. $e->getTrace().'<br />'.strval($e->getLine()).'<br />'.$e->getPrevious();
  26. }
  27. }
  28.  
  29. public function dbprefix()
  30. {
  31. return $this->DbPrefix;
  32. }
  33. }
  34.  

zobacz jakie są różnice pomiędzy jednym a drugim

tutaj link do całości sposób wywołania
http://www.phpclasses.org/browse/file/47183.html
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: 10.10.2025 - 15:05