У різних движках і фреймворках механізми роботи з базою даних вже автоматизовані. Вам лише потрібно скористатися якимись функціями, 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. Ну і на завершення поста: при необережному використанні даного коду, можна серйозно накосячілі в коді, в загальному, на ваш страх та ризик. Якщо є що додати коментарі до ваших послуг.

Додав: htmaker, 10.04.2014 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Змінюємо пароль root в MySQL 5.7
Рубрика: Linux, MySQL

Виправлення помилок у базі MySQL
Рубрика: MySQL

Відновлення пароля root в MySQL
Рубрика: MySQL

Утиліта Mytop для MySQL
Рубрика: Linux, MySQL

Кількість запитів до MySQL в режимі реального часу
Рубрика: MySQL

Як дізнатися час виконання MySQL запиту?
Рубрика: MySQL

Оптимізація MySQL (просто про складному)
Рубрика: MySQL

Повнотекстовий індекс: Full text index
Рубрика: MySQL

Вставлення стовпців: ALTER TABLE ADD
Рубрика: MySQL

Коментарі

  • Олег пише:
    27.09.2014 у 17:44

    Ну mysql_connect() вже застарів. Потрібно використовувати MySQLi, а краще PDO

    Відповісти