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){ } $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){ } } public function queryFetch($query){ $result = mysqli_fetch_array(mysqli_query($this->db, $query)); if($this->db->error && $this->config['db_debug_mode']){ } return $result; } public function queryNum($query){ $result = mysqli_num_rows(mysqli_query($this->db, $query)); if($this->db->error && $this->config['db_debug_mode']){ } return $result; } public function query($query){ $result = mysqli_query($this->db, $query); if($this->db->error && $this->config['db_debug_mode']){ } 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; } }