Решил выложить (читай «спалить») свои классы по работе с базами данных…
Класс №1. Удобное средство для работы с MySQL
Как юзать. Сначала объявляем класс…
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.