Z racji, że jest to mój pierwszy post, nie mogę tu wrzucić kodu. Będzie niżej.
0
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;
}
}