Продолжаю работать над своей учебной 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 и созданием сайтов — подписывайтесь, и комментируйте материал. Будем учитсья вместе.

Если Вы специалист и случайно наткнулись на мою статью, пожалуйста укажите на ошибки, скажите где копать. Возможно именно ваш совет поможет мне и другим избежать большого количества ошибок на пути обучения программированию.