О web-разработке
и даже немного больше...

Сниппет для работы с MySQL

В различных движках и фреймворках механизмы работы с базой данных уже автоматизированы. Вам лишь предстоит воспользоваться какими-либо функциями, API, для получения некоторых данных. Всё это удобно, безопасно, да и вообще быстро. Однако если вы решили сделать что-то своё, как говориться с нуля, такая инициатива тоже в почете, и может оказаться рациональной не в малой степени. Тем не менее, вы получите опыт, в этом случае вы в плюсе, ну да ладно, ближе к делу. Использование базы данных MySQL требует неких операций, это подключение к серверу баз данных, выбор базы, запрос, преобразование результата, к примеру, в массив и т.д.
В данной заметке мы рассмотрим простой сниппет, в виде класса, с несколькими методами, которым удобно воспользоваться при создании своих веб-приложений без использования готовых движков, и модифицировать их при надобности под себя. Данный класс частично автоматизирует процесс работы с MySQL, сокращая код в скриптах благодаря возможности повторного его использования.
Для начала работы с базой данных нам потребуются некоторые параметры, определяем их в константы:

// эту часть удобно вывести в отдельный конфигурационный файл
// например config.php
define('DB_HOST','localhost'); // хост
define('DB_USER','dbUser'); // пользователь MySQL
define('DB_PASS','qwerty1'); // пароль
define('DB_NAME','myDataBase'); // имя базы
define('DEBUG',true); // включение режима отладки

При разработке приложений, для параметров сайта удобно завести отдельный конфигурационный файл. Удобство будет заметно, когда количество файлов будет значительным, и при надобности поменять, к примеру, пароль от базы данных, вам не придется искать среди всей кучи скриптов, где же он был там прописан.
Кстати, так же рекомендую прочитать заметку о концепции «единой точки входа», если вы занимаетесь разработкой своего движка, информация может оказаться полезной вдвойне.
Сам класс содержит два простых метода, connect() и query(). Первый метод служит для подключения к серверу базы данных на основе указанных выше параметров, второй же метод служит непосредственно для выполнения запросов к базе. Обратите внимание на константу DEBUG, при значении true включает вывод сообщений об ошибках, механизмы такого рода позволяют в значительной степени облегчить отладку кода.

/*
	класс для работы MySQL
*/
class mySQL {

public $DBConnect = false;

function __construct(){
	$this->connect();
}
	
// подключение к базе
private function connect(){
	if (@$db = mysql_connect(DB_HOST, DB_USER, DB_PASS)){
		if (mysql_select_db (DB_NAME,$db)){
			mysql_query("SET NAMES 'UTF8'");
			$this->DBConnect = $db;
			return true;
		} else {
			if(DEBUG) echo 'Не удалось открыть базу данных MySQL: '.mysql_error();
			return false;
		}
	} else {
		if(DEBUG) echo 'Не удалось соединиться с базой данных MySQL: '.mysql_error();
		return false;
	}
}

// выполнение SQL запроса
// $resType - возвращаемый результат, варианты: array/resource
function query($sql,$resType='array'){
	$res = mysql_query($sql,$this->DBConnect);
	if ($resType == 'resource'){
		return $res; # ресурс
	} else {
		if ($res){
			if (mysql_num_rows($res) > 0){
				while($arr = mysql_fetch_assoc($res)){
					$arRes[] = $arr;
				}
				return $arRes; # массив
			} else {
				if(DEBUG) echo 'Запрос не вернул результат: '.$sql;
				return false;
			}
		} else {
			if(DEBUG) echo 'Ошибка выполнения запроса: '.$sql;
			return false;
		}
	}
}
}

Теперь посмотрим, как это дело применяется. Подключаем файл с классом, создаем объект – экземпляр класса:

$myObj = new mySQL();

При создании объекта запускается конструктор класса, который в свою очередь обращается к методу connect(). Данный метод выполняет подключение к серверу базы данных согласно заданным параметрам.
Теперь собственно выполнение запроса:

$arUsers = $myObj->query('SELECT * FROM users', 'array');

В качестве первого параметра метод query() получает строку SQL-запроса, второй параметр — может принимать значения array (значение по ум.) или resource, означает в каком виде метод должен вернуть результат, так же можно дополнить своими параметрами.
Как вы уже наверное заметили, строка запроса к базе в данном примере не проверяется вовсе, это естественно не безопасно, и нужно это трезво понимать. Есть и плюсы — все запросы к базе будут исходить из одной точки, а это значит можно более гибко работать с данными, парсить, логировать, и т.д.
P.S. Ну и в завершении поста: при неосторожном использовании данного кода, можно серьезно накосячить в коде, в общем, на ваш страх и риск. Если есть что дополнить, комментарии к вашим услугам.

Опубликован: 10.04.2014 г.

См. также:

Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Как изменить тип таблиц в MySQL?
Изменение кодировки таблиц в базе MySQL
Фильтрация по полю DateTime в MySQL
Меняем пароль root в MySQL 5.7
Исправление ошибок в базе MySQL
Восстановление пароля root в MySQL

Комментарии

  1. Олег пишет:

    Ну mysql_connect() устарел уже. Нужно использовать MySQLi, а лучше PDO

Добавить комментарий для Олег Отменить ответ

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

Комментарии
  • Загрузка...
Друзья сайта