JSantispam WP edition - антиспам плагин для wordpress Подробная информацию о посетителях сайта
Март 31

SQL class - класс упрощающий работу с SQL

Конечно существует много подобных классов, но многие из них перегружены лишними функциями, и вовсе не упрощают работу, некоторые наоборот пытаясь упростить объединяют  “Выполнение запроса” и “получение результирующих данных” в одну операцию что в некоторых случаях доставляет проблеммы.

В моем классе реализовано:

Удобное получение результатов

Удобный интерфейс отслеживания и обработки ошибок

Удобный интерфеус отслеживания запросов (для отладки)

Система placeholder-ов повышает безопасность приложения

метды класса  SQL

	void setErrorHandler(string $function)
	void setQueryHandler(string $function)
	bool Connect([ string $server  [, string $username  [, string $password  [, string $database]]]] )
	bool SelectDB(string $database)
	void SetPrefix(string $replace_to [, string $replace_from = '_#'] )
	SQLres Query(string $query [, mixed $args...] )
	int InsertID(void)
	int AffectedRows(void)
	bool Close(void)
	string SmartEscapeString(string $str)

метды класса SQLres

	array Fetch([int $result_type = MYSQL_ASSOC])
	int NumRows(void)
	int NumFields(void)
	bool DataSeek(int $row_number)
	bool FreeResult(void)
	string Element(string $key)

void setErrorHandler(string $function)

Задает имя функции, обработчика ошибок. При возникновении ошибки будет вызываться функция $function и ей передаваться 3и аргумента:

1 - из за чего возникла ошибка

2 - какая возникла ошибка

3 - имя_файл:строка где произошла ошибка

void setQueryHandler(string $function)

задает имя функции для обработки запросов. При каждом новом SQL запросе будет вызываться функция $function и ей передаваться 4и аргумента:

1 - sql запрос

2 - успешность его выполнения (bool)

3 - врем выполнения запроса

4 - имя_файл:строка откуда был запрос

Данная функция полезна при отладки приложения.

function log_mysql_querys($q, $r, $t, $p)
{
  GLOBAL $DB
  if($r)
    echo '<fieldset><strong>QUERY</strong>: '.$q.'<strong>AFFECTED</strong>: '.$DB-&gt;AffectedRows().' <strong>TIME</strong>: '.$t.'<strong>LINE</strong>: '.$p.'</fieldset>';
}
 
function log_mysql_errors($q, $e, $p)
{
  echo '<fieldset style="border: 3px solid red"><strong>QUERY</strong>: '.$q.'<strong>ERROR</strong>: '.$e.'<strong>LINE</strong>: '.$p.'</fieldset>';
}
 
$DB = new SQL;
$DB-&gt;setErrorHandler('log_mysql_errors');
$DB-&gt;setQueryHandler('log_mysql_querys');

bool Connect([ string $server  [, string $username  [, string $password  [, string $database  ]]]] )
соединение с сервером, тут думаю все понятно…

if(!$DB-&gt;Connect('localhost', 'root', '123'))
 exit;

bool SelectDB(string $database)

выбираем базу данных

if(!$DB-&gt;SelectDB('base'))
 exit;

void SetPrefix(string $replace_to [, string $replace_from = '_#'])
Устанавливаем префикс. Во всех запросах текст $replace_from будет заменяться на текст $replace_to

$DB-&gt;SetPrefix('asd_', 'pref_');
//будет заменять pref_ на asd_
 
$DB-&gt;SetPrefix('asd_');
//будет заменять #_ на asd_

SQLres Query(string $query [, mixed $args... ] )
Выполняет SQL запрос.
$query - сам SQL запрос, все поседующие аргументы для placeholder-ов.
Варианты placeholder-ов:
%d подставляет (int)
%s    подставляет строку обрамленную в ковычки, есле необходимо эканирует спец символы
%a    подставляет массив
%%    подставляет %

$id = 10;
$DB-&gt;Query('SELECT * FROM #_users WHERE id = %d LIMIT 1', $id)
//Выполнит: SELECT * FROM asd_users WHERE id = 10 LIMIT 1
 
$id = 'asd34sd';
$DB-&gt;Query('SELECT * FROM #_users WHERE id = %d LIMIT 1', $id)
//Выполнит: SELECT * FROM asd_users WHERE id = 34 LIMIT 1
 
$id = 'sometext';
$DB-&gt;Query('SELECT * FROM #_users WHERE id = %d LIMIT 1', $id)
//Выполнит: SELECT * FROM asd_users WHERE id = 0 LIMIT 1
 
$text = 'somename';
$DB-&gt;Query('SELECT * FROM #_users WHERE name = %s LIMIT 1', $text)
//Выполнит: SELECT * FROM asd_users WHERE name = 'somename' LIMIT 1
 
$a = array(1, 2, 5, 8);
$DB-&gt;Query('SELECT * FROM #_users WHERE id IN(%a)', $a)
//Выполнит: SELECT * FROM asd_users WHERE id IN(1, 2, 5, 8)
 
$a = array('id' =&gt; 10, 'name' =&gt; 'some..');
$DB-&gt;Query('UPDATE #_users SET %a', $a)
//Выполнит: UPDATE asd_users SET `id` = 10, `name` = 'some..'

int InsertID(void)
Возвращает ID, сгенерированный при последнем INSERT-запросе.

int AffectedRows(void)
Возвращает число затронуиых прошлой операцией рядов.

bool Close(void)
Закрывает текущее соединение с бд

——————————————————————
class SQLres

array Fetch([int $result_type = MYSQL_ASSOC])
int NumRows(void)
int NumFields(void)
bool DataSeek(int $row_number)
bool FreeResult(void)
string Element(string $key)

array Fetch([int $result_type = MYSQL_ASSOC])
Обрабатывает ряд результата запроса, возвращая ассоциативный массив (по умолчанию), численный массив или оба.

$users = $DB-&gt;Query('SELECT name FROM #_users WHERE');
while($user-&gt;Fetch())
 echo $user-&gt;name;
 
//либо так
$users = $DB-&gt;Query('SELECT name FROM #_users WHERE');
while($user-&gt;Fetch())
 echo $user-&gt;Element('name');
 
//либо так
$users = $DB-&gt;Query('SELECT name FROM #_users WHERE');
while($user-&gt;Fetch(MYSQL_NUM))
 echo $user-&gt;Element(0);
 
//либо так
$users = $DB-&gt;Query('SELECT name FROM #_users WHERE');
while($a = $user-&gt;Fetch())
 echo $a[name];

int NumRows(void)
Возвращает количество рядов результата запроса

int NumFields(void)
Возвращает количество полей результата запроса

bool DataSeek(int $row_number)
Перемещает внутренний указатель в результате запроса

FreeResult()
Освобождает память от результата запроса

Скачать SQL class v1.7 Обновлен 24.10.09

written by admin \\ tags: , , ,


Leave a Reply

JSantispam

В Вашем браузере отключена поддержка JavaScript! Для корректной работы Вам необходимо включить поддержку JavaScript и обновить данную страницу.