Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przejście z mysqli na PDO
Marci88
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.06.2019

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


Dzień dobry.
Aby się rozwijać postanowiłem nauczyć się i przejść na PDO. Jednak tu trochę inaczej sprawa wygląda przez bindowanie chociażby. Będę wdzięczny, jeśli ktoś pomoże łatwo ten temat ogarnąć. Otóż wypadało by mieć bazę w klasie, więc odpada załączanie pliku z z PDO i takie korzystanie, prawda?

Do tej pory, korzystając z MySQL, zrobiłem sobie coś w tym stylu:

  1. <?PHP
  2. class database{
  3. private $db;
  4.  
  5. public function __construct($config){
  6. $this->config = $config;
  7.  
  8. if($this->config['db_active'] == false){
  9. die("Database is not activated");
  10. }
  11.  
  12. $this->db = new mysqli($this->config['db_host'], $this->config['db_user'], $this->config['db_password'], $this->config['db_database']);
  13.  
  14. if($this->db->connect_error){
  15. die("Connection failed: " . $this->db->connect_error);
  16. }
  17. }
  18. public function queryFetch($query){
  19. $result = mysqli_fetch_array(mysqli_query($this->db, $query));
  20.  
  21. if($this->db->error && $this->config['db_debug_mode']){
  22. die("Error description: " . $this->db->error);
  23. }
  24.  
  25. return $result;
  26. }
  27. public function queryNum($query){
  28. $result = mysqli_num_rows(mysqli_query($this->db, $query));
  29.  
  30. if($this->db->error && $this->config['db_debug_mode']){
  31. die("Error description: " . $this->db->error);
  32. }
  33.  
  34. return $result;
  35. }
  36. public function query($query){
  37. $result = mysqli_query($this->db, $query);
  38.  
  39. if($this->db->error && $this->config['db_debug_mode']){
  40. die("Error description: " . $this->db->error);
  41. }
  42.  
  43. return $result;
  44. }
  45. }


A jeśli chodzi o PDO, to jakoś tak miałoby to wyglądać? Czy to jest poprawnie?
  1. class Database
  2. {
  3. public function __construct($config)
  4. {
  5. $this->config = $config;
  6.  
  7. $dsn = "mysql:host={$config['db_host']};dbname={$config['db_database']};charset={$config['db_charset']}";
  8.  
  9. try {
  10. $pdo = new PDO($dsn, $config['db_user'], $config['db_password'], $config['db_options']);
  11. $this->pdo = $pdo;
  12. } catch (\PDOException $e) {
  13. throw new \PDOException($e->getMessage(), (int)$e->getCode());
  14. }
  15. }
  16.  
  17. public function query($query)
  18. {
  19. $stmp = $this->pdo->query($query);
  20. return $stmp;
  21. }
  22.  
  23. public function prepare($query)
  24. {
  25. $stmp = $this->pdo->prepare($query);
  26. $stmp->execute(['id' => 5]);
  27. return $stmp;
  28. }
  29. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Projekt na github zawsze dobrze miec. Firma jest w stanie szybko spojrzec czy warto cie zapraszac na rozmowe czy nie. Zas sam projekt nie gwarantuje ze ciebie zatrudnia. Zazwyczaj co porzadniejesze firmy odsiewaja kandydatow na rozmowie kwalifikacyjnej podczas ktorej padaja pytania i ewentualnie zadania.

Tak wiec pisz ten projekt, wrzucaj, na pewno sie przyda ale nie gwarantuje ze ktos cie zatrudni.

Cytat
Na chwilę obecną i na moje potrzeby, MySQL w zupełności mi wystarcza. O innych bazach nawet nie próbowałem się niczego dowiedzieć, bo nie widziałem takiej potrzeby, ale obczaję z ciekawości.
To ze akurat mysql ci wystarczy nie znaczy ze nie masz od pracowac na PDO. Jak popracujesz to przynajmniej bedziesz juz to znal a predzej czy pozniej bedziesz tego potrzebowal wiec po co siedziec na mysqli?
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: 16.10.2025 - 09:19