Przejście z mysqli na PDO

Odpowiedz Nowy wątek
2019-06-06 10:34
0

Z racji, że jest to mój pierwszy post, nie mogę tu wrzucić kodu. Będzie niżej.

Pozostało 580 znaków

2019-06-06 10:34
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:

<?PHP
    class database{
        private $db;

        public function __construct($config){
            $this->config = $config;

            if($this->config['db_active'] == false){
                die("Database is not activated");
            }

            $this->db = new mysqli($this->config['db_host'], $this->config['db_user'], $this->config['db_password'], $this->config['db_database']);

            if($this->db->connect_error){
                die("Connection failed: " . $this->db->connect_error);
            }
        }
        public function queryFetch($query){
            $result = mysqli_fetch_array(mysqli_query($this->db, $query));

            if($this->db->error && $this->config['db_debug_mode']){
                die("Error description: " . $this->db->error);
            }

            return $result;
        }
        public function queryNum($query){           
            $result = mysqli_num_rows(mysqli_query($this->db, $query));

            if($this->db->error && $this->config['db_debug_mode']){
                die("Error description: " . $this->db->error);
            }

            return $result;
        }
        public function query($query){
            $result = mysqli_query($this->db, $query);

            if($this->db->error && $this->config['db_debug_mode']){
                die("Error description: " . $this->db->error);
            }

            return $result;
        }
    }

A jeśli chodzi o PDO, to jakoś tak miałoby to wyglądać? Czy to jest poprawnie?

class Database
    {
        public function __construct($config)
        {
            $this->config = $config;

            $dsn = "mysql:host={$config['db_host']};dbname={$config['db_database']};charset={$config['db_charset']}";

            try {
                 $pdo = new PDO($dsn, $config['db_user'], $config['db_password'], $config['db_options']);
                 $this->pdo = $pdo;
            } catch (\PDOException $e) {
                 throw new \PDOException($e->getMessage(), (int)$e->getCode());
            }
        }

        public function query($query)
        {
            $stmp = $this->pdo->query($query);
            return $stmp;
        }

        public function prepare($query)
        {
            $stmp = $this->pdo->prepare($query);
            $stmp->execute(['id' => 5]); 
            return $stmp;
        }
    }

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0