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

Решил выложить (читай «спалить») свои классы по работе с базами данных…

Класс №1. Удобное средство для работы с MySQL

mysql.class.php

Как юзать. Сначала объявляем класс…

include "mysql.class.php";  // подключаем наш класс
$db = new sql_db('localhost:7777', 'username', 'password', 'basename', false);  // создаём объект
if (!$db->db_connect_id) die("Ошибка базы данных!");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

Потом изаем sql запросами. Все запросы(кроме select) при успешном выполнении возвращают true , иначе — false

$db->sql_query("INSERT INTO `table` (`name`, `family`, `piska`) VALUES ('Петя', 'Ложкин', '15')");  // вставим запись
$lastid = $db->sql_nextid();  // получить id последней вставленной записи
$db->sql_query("UPDATE `table` SET `name`='Вася', `family`='Пупкин', `piska`=`piska`+1 WHERE `id`='40'");  // обновим запись с id=40
$db->sql_query("DELETE FROM `table` WHERE `id`='30'");  // удаляем запись с id=30.

$result = $db->sql_query("SELECT DISTINCT * FROM `table` WHERE `id`>10 ORDER BY `name` LIMIT 50");  //типичный результ селекта
// если предполагаем(и нам нужно) что запись в итоге будет только одна, то ловим её так
$array_item = $db->sql_fetchrow($result);  // массив с возвращённым результатом
$array_item = $db->sql_fetchassoc($result);  // или ассоциативный
// если предполагается возвратить много записей, то используем цикл
while($row = $db->sql_fetchassoc($result)){  // выведет список полей ответа от бд
  echo "Name: {$row['name']} , Family: {$row['family']} , Piska: {$row['piska']}
";
}

// ну и на последок можно и закрыть соединение
$db->sql_close();

Класс №2. Удобное средство для работы с Postgre SQL

postgres.class.php
Это абсолютно тот же самый класс, что и первый класс, только заточенный для постгрес.
Отличие только сугубо в построении самого запроса(отсутствие кавычек — с ними вообще здесь надо быть осторожнее, чем в MySQL)

include "postgre.class.php";  // подключаем наш класс
$db = new sql_db('localhost:7777', 'username', 'password', 'basename');  // создаём объект
if (!$db->db_connect_id) die("Ошибка базы данных!");

Аналогичные вещи проделаем и здесь:

$db->sql_query('INSERT INTO table (name, family, piska) VALUES ("Петя", "Ложкин", 15)");  // вставим запись
$lastid = $db->sql_nextid();  // получить id последней вставленной записи
$db->sql_query('UPDATE table SET name="Вася", family="Пупкин", piska=piska+1 WHERE id=40");  // обновим запись с id=40
$db->sql_query('DELETE FROM table WHERE id=30');  // удаляем запись с id=30.

$result = $db->sql_query('SELECT DISTINCT * FROM table WHERE id>10 ORDER BY name LIMIT 50");  //типичный результ селекта
// если предполагаем(и нам нужно) что запись в итоге будет только одна, то ловим её так
$array_item = $db->sql_fetchrow($result);  // массив с возвращённым результатом
$array_item = $db->sql_fetchassoc($result);  // или ассоциативный
// если предполагается возвратить много записей, то используем цикл
while($row = $db->sql_fetchassoc($result)){  // выведет список полей ответа от бд
  echo "Name: {$row['name']} , Family: {$row['family']} , Piska: {$row['piska']}
";
}

// ну и на последок можно и закрыть соединение
$db->sql_close();

Библик для безопасного использования MySQL

Представленный вначале класс №1 для MySQL подразумевает, что Вы будете сами следить за запросами и в случае необходимости экранировать символы кавычек от возможных sql-инъекций ( при помощи mysql_real_escape_string(); ). Данная библиотека функций(mysql.inc.php) избавляет Вас от гемора с экранировкой параметров. Выглядит это приблизительно так:

db_query("SELECT * FROM `table` WHERE `id`=%d", 10);  // %d - это десятичное число

Последняя лайба не моя. Её я спёр и дал Вам на суд общественный))). Хотя методология такая как и у wordpress.

Запись опубликована в рубрике PHP, Базы данных с метками , , , , . Добавьте в закладки постоянную ссылку.

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