Класс для работы с БД MySQL в PHP

Друзья! Я думаю, что совершенно очевидно, о чём сейчас пойдёт речь. Я хочу рассказать вам о своём небольшом велосипеде, который я использую в вот уже в нескольких десятках проектов. Предназначен он для осуществления доступа к данным в БД, и служит для облегчения доступа к ним. Хотя многие критики скажут, что банальное чтение через mysql_fetch_row() намного быстрее, и я соглашусь — да, быстрее. А на ассемблере было бы ещё быстрее.

Так уже повелось, что скриптовые языки программирования придуманы не для скорости, а для удобства разработки и сопровождения. Поэтому тем, кому нужна скорость, посоветую писать на асме или на Си.

Итак, вернёмся к рассмотрению класса доступа.

Главное преимущество этого класса в том, что он не накладывает никаких ограничений на запрос, который вы можете использовать, поскольку синтаксис, используемый для запроса данных — оригинальный, MySQL-ый. Класс в основном дополняет процедуру чтения данных из закэшированного результата.

Класс превращает результат запроса в массив, но не читает сразу все данные в массив циклически, а активно использует хитрые интерфейсы и итераторы, которые появились в PHP5. Это позволяет и память сэкономить и время доступа. А если вы будете перебирать результаты через foreach(), то разницы по скорости с циклическим доступом через while/mysql_fetch_row практически никакой не будет, добавляется лишь одна проверка.

Качаем класс по ссылке ниже, разбираемся и комментируем.

Скачать: ultima-db

Вот содержимое файла example.php, в котором вы можете навскидку глянуть принцип использования этого класса.


<?php

require_once 'ultima-db.inc.php';

// Connect to DB (may be stored somewhere like $GLOBALS or your core singletone)
$db = new uCoreDatabase(array(
 'host' => 'localhost',
 'port' => 3306,
 'user' => 'root',
 'pass' => 'password',
 'name' => 'testdb',
));

// Example 1 - You can use count() and [index] to access result (like as normal arrays)
$r = $db->sql('select * from `users` where active != 0 order by id asc limit 0, 5');

// Get first element
var_dump($r[0]);

// Get 3rd element
var_dump($r[2]);

// Get last element
var_dump($r[count($r) - 1]);
// Example 2 - You can use foreach() to iterate through elements
// remember - there is no need to reset cursor

foreach ($r as $k => $d) {
 echo $k.' - '.$d['first_name']."<br>\n";
}

// Example 3 - You can use asArray() to get result as an array

var_dump($r->asArray());
// Example 4 - You can use result as inserted id when using insert.

$id = $db->sql('insert into `users` set first_name = "Ivan"');

echo 'Inserted ID = '.$id."<br>\n";

// Example 5 - If you are reset/each adept, you can use it as well

reset($r);
while (list($k, $d) = each($r)) {
 echo $k.' - '.$d['first_name']."<br>\n";
}

Комментарии приветствуются!

Подписаться
Уведомить о
guest

 

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Den

depricated

Данное расширение устарело, начиная с версии PHP 5.5.0, и будет
удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL.
Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ
для получения более подробной информации. Альтернативы для данной
функции:

mysqli_connect()

PDO::__construct()