Продолжаю работать над своей учебной CMS. И наконец-то осилил класс для работы с базой данных MySQL. Для меня это был не простой опыт, было много ошибок и даже хотелось просто взять чужую библиотеку и на этом успокоиться.
Кстати мне кажется использование чужих библиотек это вовсе даже и неплохо, но не в данном проекте. Это не коммерческий а учебный проект и мне кажется что, для того чтоб научиться лучше хотя-бы попытаться всё сделать самому.
Класс получлся простой и я думаю в последствии он будет ещё не раз улучшаться. Хотябы потому-что я пока понятия не имею как устроены сложные запросы. Читал о них, но не знаю как использовать.
Следовательно весь класс заточен под простые запросы. В нём всего 4 метода и конструктор.
Конструктор задаёт параметры для подключения, методы отвечают за виды запросов
- select — простая выборка
- insert — вставка
- update — обновление
- delete — удаление
<?php
class DatabaseMysql
{
public $pdo;
public function __construct()
{
$options = [
\PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false
];
$dbConfig = require('./core/config/DbConfig.php');
$this->pdo = new \PDO(
'mysql:host=' . $dbConfig['db_host'] . ';dbname=' . $dbConfig['db_name'] . ';charset=utf8mb4',
$dbConfig['db_user'],
$dbConfig['db_pass'],
$options
);
}
/**
* Простой запрос на выборку данных из таблицы
*
* @param string $query
* @param array $params
* @return void
*/
public function select(string $query, array $params = [])
{
$sth = $this->pdo->prepare( $query );
$res = $sth->execute( $params );
if ( false === $res ) {
return null;
}
return $sth->fetchAll( PDO::FETCH_ASSOC );
}
/**
* Простой запрос на запись данных в таблицу
*
* @param string $query
* @param array $params
* @return void
*/
public function insert(string $query, array $params = [])
{
$sth = $this->pdo->prepare($query);
$res = $sth->execute($params);
if (false === $res) {
return null;
}
return $this->pdo->lastInsertId();
}
/**
* Простой запрос на обновление данных в таблице
*
* @param string $query
* @param array $params
* @param boolean $row
* @return void
*/
public function update(string $query, array $params = [], $row = false)
{
$sth = $this->pdo->prepare($query);
$sth->execute($params);
if (true === $row) {
$updates = $sth->rowCount();
return $updates;
}
}
/**
* Простой запрос на удаление данных из таблицы
*
* @param string $query
* @param array $params
* @param boolean $row
* @return void
*/
public function delete(string $query, array $params = [], $row = false)
{
$sth = $this->pdo->prepare($query);
$sth->execute($params);
if (true ===$row) {
$delete = $sth->rowCount();
return $delete;
}
}
}
Понимаю, что это не вершина мастерства, но надеюсь что для моего уровня вполне не плохо.
Если понравилась статья, поставьте, пожалуйста, лайк!
Если Вы интересуетесь программированием на PHP и созданием сайтов — подписывайтесь, и комментируйте материал. Будем учитсья вместе.
Если Вы специалист и случайно наткнулись на мою статью, пожалуйста укажите на ошибки, скажите где копать. Возможно именно ваш совет поможет мне и другим избежать большого количества ошибок на пути обучения программированию.