class php подключение к бд

MySQL и PHP: Класс для создания подключения к базе данных

В этой статье сегодня поговорим о создании подключения к базе данных и обсудим какой вариант лучше использовать процедурный или объектно — ориентированный. Для начала давайте разберем на каком уровне мы находимся, если это уровень полного новичка, тогда мой совет без исключения начать использовать процедурный стиль подключения к базе данных. Ранее я писал статью по этой теме на своем блоге, подробнее о процедурном стиле подключения к базе данный читайте в статье: «Как подключиться к MySQL используя PHP». Если за плечами есть уже какой нибудь опыт работы с процедурным стилем подключения к базе данных, тогда Вас наверное как и меня мои проекты просто взяли и заставили использовать объектно — ориентированный подход.

Так или иначе мы сейчас разберем этапы построения класса для создания подключения к базе данных MySQL на языке PHP. Нам понадобиться два PHP файла, в один файл мы «положим» класс для создания подключения к базе данных, а во — втором будем работать с этим классом.

Думаю, мы не маленькие уже дети и знаем, что нам нужно для работы с PHP файлами. Установленный веб — сервер Apache, PHP, СУБД MySQL и знает куда эти файлы положить — (для тех, кто не знает или забыл).

Файл в котором храниться класс я выношу в отдельный файл и именую его в формате: имя класса.class.php и я знаю, что храниться у меня в этом файле. Когда в проекте много классов, можно потеряться, поэтому рекомендую именовать файлы с классами в формате описанным выше.

Добавим метод Connect() для создания соединения с базой:

Добавляем метод Close():

Следующий и уже последний в этом классе метод Close() — закрывает соединение с базой данных, функция mysql_close() закрывает соединение с сервером MySQL и возвращает результат.

С помощью функции define() мы создали константы, для хранения параметров соединения с базой данных. Require_once подключает наш класс DataBase в файл index.php.

Давайте вспомним ключевое слово static, которое использовалось в классе DataBase в свойствах и методах данного класса. Это дает нам возможность обращаться к свойствам и методам класса через «::» (два двоеточия). Метод DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE), принимает 4 параметра — созданные функцие define() константы, в которых хранится информация о соединения с базой данных. Если соединение пройдет успешно, метод Connect() вернет нам соединение с базой данных. Далее мы сможем работать и выполнять запросы к базе данных. Функция mysql_query() — выполняет запрос к базе данных. Функция mysql_fetch_assoc() — обрабатывает ряд результата запроса и возвращает ассоциативный массив. Конструкция echo выводит версию сервера MySQL. И в завершение метод DataBase::Close() — закроет соединение с базой данных.

Источник

PHP класс для удобной и безопасной работы с MySQL

Безопасность

Удобство и краткость кода приложения

Универсальность и простота освоения

Тем не менее, в итоге мы получили мощный и лёгкий генератор запросов, который с лихвой оправдывает этот небольшой недостаток.
Мощный потому, что мы не ограничены синтаксисом квери-билдера, «SQL-ем, написанным на PHP» — мы пишем чистый SQL.
Лёгкий потому, что весь API составления запросов состоит из полудюжины плейсхолдеров и функции parse()
Вот мой любимый пример — вставка с использованием функций Mysql

С одной стороны, мы сохраняем синтаксис SQL, с другой — делаем его безопасным, а с третьей — капитально сокращаем количество кода.

Подробнее о типизованных плейсхолдерах

Кроме того, типизованный плейсхолдер — это ОЧЕНЬ удобно!
Во-первых, потому что становится ненужным специальный оператор для привязки значения к плейсхолдеру (но при этом сохраняется возможность указать тип передаваемого значения!)
Во-вторых, раз уж мы изобрели типизованный плейсхолдер — мы можем налепить этих плейсхолдеров огромное количество, для решения множества рутинных задач по составлению SQL запросов.
В первую очередь сделаем плейсхолдер для идентификаторов — нам его отчаянно не хватает в реальной, а не воображаемой авторами стандартных API, жизни. Как только девелопер сталкивается с необходимостью динамически добавить в запрос имя поля — каждый начинает извращаться по-своему, кто в лес, кто по дрова. Здесь же всё унифицировано с остальными элементами запроса, и добавление идентификатора становится не сложнее добавления строки. Но при этом идентификатор форматируется не как строка, а в соответствии со своими собственными правилами — заключается в обратные кавычки, а внутри эти кавычки экранируются удвоением.
Дальше — больше. Следующая головная боль любого разработчика, когда-либо пытавшегося использовать стандартные prepared statements в реальной жизни — оператор IN(). Вуаля, у нас есть плейсхолдер и для этой операции! Подстановка массива становится не сложнее любых других элементов, плюс она унифицирована с ними — никаких отдельных функций, меняется всего лишь буква в плейсхолдере.
Точно таким же образом делаем и плейсхолдер для SET. Не удержусь и продемонстрирую, насколько простым становится код для такого замороченного запроса, как INSERT… ON DUPLICATE:

Кстати, как многие могли заметить, этот класс во многом напоминает библиотеку DbSimple Дмитрия Котерова. Но у меня есть принципиальные расхождения с некоторыми идеями, заложенными в неё.
Во-первых, я противник любой магии, когда одна и та же функция может возвращать различный результат в зависимости от типа переданных данных. Это, возможно, чуть упрощает написание, но при этом чудовищно затрудняет сопровождение и отладку кода. Поэтому в моем классе вся магия сведена к минимуму, а все операции и типы данных всегда прописываются явно.
Во-вторых, в DbSimple немного, на мой взгляд, переусложнённый синтаксис. С одной стороны, фигурные скобки — гениальная идея. С другой — а зачем, если в нашем распоряжении вся мощь PHP? Поэтому я решил пойти другим путём и весто «внутренней» — заведомо ограниченной — логики ввёл «внешнюю», ограниченную лишь синтаксисом РНР. Главное, чтобы любые динамические элементы попадали в запрос только через плейсхолдеры, а остальное зависит лишь от фантазии разработчика (и функции parse()).

Источник

Класс для работы с базой данных

class php подключение к бд

Привожу свой прокомментированный класс для работы с базой данных:

mysqli = new mysqli(«localhost», «root», «», «my_db»);
$this->mysqli->query(«SET lc_time_names = ‘ru_RU'»);
$this->mysqli->query(«SET NAMES ‘utf8′»);
>

Как видите, нет ничего лишнего, только всё самое необходимое. Теперь разберём PHP-код, который использует данный класс:

Вот такой незамысловатый класс для работы с базой данных я использую в своих проектах.

class php подключение к бд

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 21 ):

Интересный метод getQuery(), напоминает параметризованные запросы prepare(), bind_param(). Как по вашему, стоит ли заморачиваться с ними или для безопасности вполне хватит вашего подхода для подстановки значений в запрос?

Лично я их не использую и особого смысла не вижу.

Михаил, возникла проблема. Все методы работают кроме select и selectRow. Не знаю в чем проблема, никаких ошибок не выводит но и то, что нужно тоже 🙁 Я в отчаянии.

Скорее всего, ошибка в Вашем запросе. Используйте этот метод для поиска ошибок: http://myrusakov.ru/php-finderror.html и для поиска ошибки в SQL: http://myrusakov.ru/sql-finderror.html

Он Array и должен возвращать. Это же массив данных.

Михаил, спасибо БОЛЬШОЕ Вам за это курс, подскажите, пожалуста, нет ли в отправке формы в БД каких-либо особенностей при отправке значений радиокнопок? У меня есть форма отзыва о компании, в которой есть 2 текстовых поля и 2 поля с радиокнопками. Значения полей с текстом в БД попадает, а выбранное значение радиокнопок-нет. просто пустая ячейка. Хотя через echo на странице оно выводиться?

Никаких особенностей нет, надо просто искать ошибку: http://myrusakov.ru/php-finderror.html

Спасибо за класс, удобно. Прошу показать пример работы с insert и update

Мне больше вот этот нравится, не знаю, дает он 100% защиту от sql инъекция, но хотя бы какая то. http://habrahabr.ru/post/165069/

Дякую за посилання.. дуже зручно і безпечно.

Не получается подключиться к базе данных. Куда класть этот файл класса БД?

В папку положите корневую.

Сделал! Сделал! Оказывается в файле класса БД не надо было прописывать данные БД (логин пароль и пр.)!

Добавить этот весь код надо в один файл? У меня database_class.php

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Небольшой класс для работы с БД ( PDO )

Внимание! Моё мнение может отличаться от вашего, поэтому хочу сразу сказать, что эта статья не есть истина в последней инстанции и реализация этого класса зависит от программиста и его предпочтений.

Вступление

Начнём с класса DB.

Тут, я думаю, всё понятно, эти вещи можно не объяснять.

Далее большая часть пояснений будет содержаться в коде.

Прекрасно, мы подключились к БД. Теперь нам нужно создать метод, который позволит совершать SQL запросы.

Реализация метода query

Мы готовы к реализации этого метода, но у нас возникает вопрос:

«Что за параметры он принимает и как он должен их использовать?»

Ответ на первый вопрос очевиден:

А что со вторым вопросом?

Всё так же просто, что бы ответить на этот вопрос, мы должны узнать, в каком виде нам подают эти параметры. А получаем мы их вот такими:

Вернёмся к предыдущему вопросу и ответим на него:

Но сначала, мы должны подготовить запрос для подстановки этих значений. В итоге код будет выглядеть так:

Некоторые комментарии немного искажают истину, но при этом кардинально ничего не меняют

Мы имеем уже довольно мощный инструмент, использующий подготовленные запросы и требующий от разработчиков знание SQL, а не тонкостей класса. Но при этом, я бы зашил в этот класс типовые запросы, такие как:

Моя реализация

Эти методы могут быть реализованы по разному, но я представлю свою реализацию.

Здесь эти методы реализованы, возможно не лучшим образом, но реализованы.

Так же сюда можно добавить ещё функции, упрощающие жизнь, но лично мне этого с головой хватает.

Можно добавить следующие методы:

Применение

Мы написали наш класс. Теперь нам нужно протестировать его в реальном «бою».

Давайте попробуем. Для начала нам нужно создать любую таблицу в БД, допустим это будет таблица posts. Добавим туда пару записей и попробуем вывести их с помощью нашего класса.

Это понятно и не требует объяснения, идём дальше. Теперь, давайте попросим БД test вернуть нам значение всех постов при помощи нашего класса.

На выходе мы имеем следующее:

Отлично, а теперь давайте выведем только первый пост.

Прекрасно. Ну и в конце добавим запись и выведем данные до и после.

После

Мы получили то, что хотели и убедились в том, что этот класс рабочий.

В заключении

Ссылка на github: class DB

Источник

Создаем класс для работы с базой данных в PHP

Дата публикации: 2011-04-23

class php подключение к бд

От автора: в данном уроке мы рассмотрим простой пример создания собственного класса ООП PHP, для работы с базой данных.

Замечание: данный класс не является эталонным, на который стоит равняться. Цель данного урока показать, как можно все удобно сгруппировать для комфорта создания CMS в будущем.

Скелет класса PHP для работы с базой данных

Прежде чем начать писать класс для работы с базой данных в PHP, мы сначала набросаем его скелет, кстати имя нашего класса будет DBClass.

Во-первых, нам понадобиться два метода:

для того, чтобы соединится с базой;

class php подключение к бд

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

для дисконнекта с базой.

Во-вторых, в скелет класса войдет группа методов дляредактирование определенных таблиц базы данных. Например, вставка, удаление, выборка – insert, delete, select соответственно. Операции типа редактирование и т.п. будет вам как домашнее задание. Напишите сами, тем самым дополнив базу данных новыми полезными компонентами, то есть методами.

Схематический скелет класса DBClass:

function__construct(); (метод, который вызывается автоматически, при создании класса)

Пишем метод __construct();

В этот метод извне мы будет передавать 4 параметра: хост, имя пользователя, пароль, имя базы данных. Потом присвоим эти переменные аналогичным классовым переменным. И конечно, же вызовем метод открытия соединения сMySQL.

метод select();

Цель метода состоит в возвращении массива значений выбранных полей в запросе. С полученным массивом в будущем будет намного проще работать. Разберем словесно алгоритм работы метода.

Формируем запрос ($sql) в MySQL и отправляем его mysql_query($sql)

Далее у нас идет цикл for, в котором мы перебираем выбранные из MySQL строки по очереди. Количество строк узнаем при помощи функции mysql_num_rows()

Далее идет цикл, в котором мы формируем конечный массив значений выбранных полей в запросе.

Далее else(елсами) возвращаем при неудаче false к соответствующим ифам (if).

Метод select() готов.

class php подключение к бд

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Вид полученного массива:

class php подключение к бд

метод insert();

Алгоритм метода просто:

Сначала мы формируем сам SQL запрос.

Далее в цикле мы немного изменяем вид значений, которые передались извне через параметры функции.

далее mysql_query($insert) и проверка на истинность выполнения запроса.

метод delete();

Предполагая, что здесь и так все ясно. Делаем по аналогии с предыдущими методами. + к тому же здесь не так уж и много кода.

метод closeConnection();

Метод, при вызове которого закрывается соединение с Базой Данных.

Сначала мы проверяем на истинность, открыто ли соединение.

Если открыто, закрываем его и ставим идентификатору соединение значение false и возвращаем значение метода true.

Простая демонстрация использования класса

Файл dbclass.php целиком

Вот мы и рассмотрели пример создания класса, для работы с базой данных в PHP, с использованием ООП на практике, теперь дело за вами: сидеть и экспериментировать.

Всего доброго. С уважением Паук Владислав.

Автор: Влад Паук

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

class php подключение к бд

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

class php подключение к бд

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (10)

То что защиты никакой это минус, а так статья полезная.

Полностью согласен с Дмитрием. Автору нужно задуматься о собственном обучении, нежели об обучении других.
Почему кстати код так ужасно оформлен?
Не смогли даже с этим справиться на сайте, а уже пишите статьи.

Уважаемый Борис, не могли бы Вы хотя бы на примере данного класса, показать, как нужно правильно и красиво оформлять код? Считаю, что это будет полезно не только для начинающих.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *