Классы в MySQL
Вступление
Никто точно не знает почему, но mysql и php в большинстве web-проектов почти всегда используются вместе. Вроде разработчики php включили поддержку и других баз данных, да и mysql можно использовать не только вместе с php. А может просто провайдеры стремясь снизить цену хостинга и привлечь клиентов, включали на серверах поддержку php и mysql и это стало традицией?..
Но факт есть факт. Наверно больше половина проектов в интернете сделана на этой связке. Поэтому и возникла необходимость создать инструмент для программистов, с помошью которого можно работать с базой данных просто и эффективно. Вот так и появился класс на php, с помощью которого программирование намного упростилось.
Данный класс не претендует на функциональную полноту, но как показывает многолетний опыт, свойств его хватает для многих проектов.
Что хочешь, то и получишь!
Основу класса составляет простой анализатор, собранный на регулярных выражениях. А суть очень проста, мы должны получить результат в той форме, в которой ожидаем.
Ну например, если мы хотим узнать количество клиентов занесенных в базу данных>
select count(*) from `customers`;
то ясно, что мы ожидаем число. Класс разбирает запрос к базе данных и на основание запроса, выдает результат.
Но как говориться, лучше один раз увидеть, чем сто раз услышать.
Забираем и смотрим класс.
Ну а теперь посмотрим как этот зверь работает.
Шаг 1.
Откроем новую базу данных и создадим там пару таблиц.
create database `test_mysql_class` ;
create table `customers` (
`customer_id` smallint(6) not null auto_increment,
`lastname` varchar(255) not null default '',
`surname` varchar(255) not null default '',
primary key (`customer_id`)
) type=myisam auto_increment=4 ;
insert into `customers` values (1, 'pupkin', 'vasya');
insert into `customers` values (2, 'mal4ish', 'ploxish');
insert into `customers` values (3, 'mal4ish', 'kibal4ish');
create table `orders` (
`customer_id` smallint(6) not null default '0',
`product_id` smallint(6) not null default '0',
key `customer_id` (`customer_id`,`product_id`)
) type=myisam;
insert into `orders` values (1, 12);
insert into `orders` values (1, 23);
insert into `orders` values (1, 34);
insert into `orders` values (1, 65);
insert into `orders` values (2, 12);
insert into `orders` values (3, 33);
insert into `orders` values (3, 43);
insert into `orders` values (3, 655);
У нас появилось две таблицы, с клиентами и с их заказами.
Для теста хватит!
Шаг2.
Попытаемся соединиться с базой данных при помощи класса:
require("class.mysql.php");
$host = "localhost";
$only_db = "test_mysql_class";
$username = "username";
$password = "password";
$db = new mysql_db();
if(!$db->getconnect($host,$only_db,$username,$password)){
echo "net contact :-(";
exit;
}else echo "yes contact! ;-)";
?>
Если у вас появилась надпись "yes contact! ;-)", значит соединение с базой данных прошло успешно, можно переходить к изучению класса.
Внимание! Все примеры будут будут дописываться в конец первой программы!
Шаг 3.а
И так попробуем узнать, сколько у нас клиентов в базе данных?
$sql = "select count(*) from `customers` ";
$count = $db->query($sql, 1);
echo $count;
?>
Проще не бывает.
Класс проанализировал наш запрос, и понял, что на выход надо послать одно число. Если мы не хотим, что бы отладочная информация печаталась классом, то надо вместо:
$count = $db->query($sql, 1);
написать так:
$count = $db->query($sql, 0); или просто $count = $db->query($sql);
также это работает с min(*) и МАХ(*).
Шаг 3.б.
Теперь попробуем узнать какой id номер у нашего клиента, которого зовут pupkin vasya
...
$sql = "select `customer_id` from `customers`";
$sql .= " where `lastname` = 'pupkin' and `surname` = 'vasya' limit 0,1";
$customer_id = $db->query($sql, 1);
echo $customer_id;
?>
При „разборке“ этого выражения, класс „понял“, что на „гора“ надо выдать только одно число, а именно $customer_id . Почему? Потому, что во-первых мы делаем select только по `customer_id` , a во-вторых и это самое главное, в конце $sql у нас стоит limit 0,1 . Как говориться комментарии излишни.
Шаг 3.в.
Ну а теперь попробуем, найти имя и фамилию клиента зная его id.
…
$sql = "select `lastname`,`surname` from `customers`";
$sql .= " where `customer_id` = 1 limit 0,1";
$obj = $db->query($sql, 1);
echo $obj;
?>
ну и что мы получим? object
Да, мы получили обьект. Но у этого обьекта есть нужные нам свойства,
а именно `lastname` и `surname` ,а это то, что нам надо!
...
$sql = "select `lastname`,`surname` from `customers`";
$sql .= " where `customer_id` = 1 limit 0,1";
$obj = $db->query($sql, 1);
echo $obj->lastname;
echo "";
echo $obj->surname;
?>
Теперь мы получили:
pupkin
vasya
что нам и было надо!
Шаг 3.г.
А теперь мы захотим получить все имена клиентов из базы данных.
...
$sql = "select `lastname`,`surname` from `customers` where 1";
$array = $db->query($sql, 1);
echo $array;
?>
И что мы получили на выходе? Массив! array
Но это массив обьектов, нам нужно только их перелистать и получить все имена!
...
$sql = "select `lastname`,`surname` from `customers` where 1";
$array = $db->query($sql, 1);
if(is_array($array))
foreach ($array as $obj)
echo $obj->lastname." ".$obj->surname."";
?>
Вот они наши клиенты:
pupkin vasya
mal4ish ploxish
mal4ish kibal4ish
Шаг4.
Казалось бы всего перечисленного могло бы хватить, но... .
Если нам понадобиться получить все продукты которые заказали клиенты с фамилией mal4ish ? Конечно проблем нет, так как mysql не все вложенные sql запросы поддерживает, то sql запрос будет следующим:
select `orders`.`product_id` as id from ( `orders` left join `customers` on `customers`.`customer_id` = `orders`.`customer_id`)where `customers`.`lastname` = 'mal4ish'
...
$sql = "select `orders`.`product_id` as id from ";
$sql .= "( `orders` left join `customers` on `customers`.`customer_id` = `orders`.`customer_id`)";
$sql .= "where `customers`.`lastname` = 'mal4ish' ";
$array = $db->query($sql, 1);
if(is_array($array))
foreach ($array as $obj)
echo $obj->id."";
?>
Но для некоторых это сложно и непонятно, а иногда такой запрос составить просто невозможно.
Что делать? Надо перевести комманды которые мы хотим выполнить в тот формат, который понимает mysql.
Ну например sql запрос можно было бы написать так:
select `product_id` from `orders` where `customer_id`
in(select `customer_id` from `customers` where `lastname` = 'mal4ish')
Только не пробуйте пропустить это через mysql, конечно это не правильно.
Но если мы скажем нашему классу, что бы он разобрал эту конструкцию по частям и заменил то, что находится в скобках на реальные значения? Почему бы и нет? Но что бы избежать путаницы в настоящих и ненастоящих запросах, поставим в нашем примере вместо круглых, фигурные скобки, и пропустим в конце это через наш класс.
...
$sql = "select `product_id` from `orders` where `customer_id` in";
$sql .= " {select `customer_id` from `customers` where `lastname` = 'mal4ish' } ";
$array = $db->query($sql, 0);
if(is_array($array))
foreach ($array as $obj)
echo $obj->product_id."";
?>
Если включить режим вывода на экран, то увидим, что наш класс меняет запрос который стоит в фигурных скобках, на результат разделенный запятой и снова выполняет запрос, пока не получит последний результат:
yes contact! ;-)
---- sql
select `product_id` from `orders` where `customer_id`
in {select `customer_id` from `customers` where `lastname` = 'mal4ish' }
---- in sql
select `customer_id` from `customers` where `lastname` = 'mal4ish'
---- sql
select `product_id` from `orders` where `customer_id` in (2,3)
12
33
43
655
Результат совпадает с ожидаемым!
Заключение
Вкратце все. Класс как класс, пользуйтесь на здоровье! Надо только следить за синтаксисом, и за пробелами, что бы регулярные выражения поняли, что вы хотите.
|
ВступлениеНикто точно не знает почему, но mysql и php в большинстве web-проектов почти всегда используются вместе. Вроде разработчики php включили поддержку и других баз данных, да и mysql можно |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2026-07-29 » «Адаптация бюджета» в Яндекс Директе: как автоматически масштабировать рекламу без потери эффективности
- 2026-07-29 » Overlay в РСЯ: новый формат мобильной рекламы, который не раздражает пользователей
- 2026-07-29 » «Панорама» в Яндекс Директе: новый уровень охватной рекламы для вашего бизнеса
- 2026-07-29 » Карточки товаров и отзывы на маркетплейсах: что по закону считается рекламой, а что нет
- 2026-07-29 » Комментарии в приватных каналах «Макс»: новый инструмент для бизнес-коммуникаций
- 2026-07-23 » Как ошибки в AI-ответах портят репутацию компании
- 2026-07-23 » Маркировка рекламы в 2026 году: фатальные ошибки, которые обойдутся вашему бизнесу в полмиллиона рублей
- 2026-07-23 » Нейросети в дизайне сайтов и графике: революция, эволюция или угроза?
- 2026-07-23 » РСЯ открыла инструмент авторасстановки рекламы для всех партнеров: как автоматизация меняет правила монетизации
- 2026-07-23 » Контент для стоматологических клиник: какими текстами наполнить сайт, чтобы пациенты записывались сами
- 2026-07-22 » Продающие анимированные баннеры для вашего бизнеса
- 2026-07-22 » Услуги таргетолога по настройке рекламы ВКонтакте (ВК)
- 2026-07-19 » GEO / AISEO / AEO для B2C
- 2026-07-19 » GEO / AISEO / AEO для B2B
- 2026-07-15 » ИИ-агент как сотрудник: права, журнал действий и управление доступом через BearPass
- 2026-07-15 » Как проверить юриста, адвоката или нотариуса онлайн: пошаговое руководство для бизнеса
- 2026-07-15 » Телефон в вашем кармане действительно следит: кто, зачем и как это остановить
- 2026-07-15 » Куки и трекеры: какую информацию о вас собирают сайты и как это отключить
- 2026-07-15 » Почему корпоративный мессенджер — это не роскошь, а необходимость для бизнеса
- 2026-07-15 » Реклама на Авито, которая реально работает
- 2026-07-15 » Реклама на Авито, которая реально работает
- 2026-07-10 » Корпоративный сайт, который показывает масштаб компании, укрепляет доверие и ведет клиента к целевому действию
- 2026-07-10 » Сайт бронирования, который превращает интерес клиента в прямую бронь, запись или заявку
- 2026-07-10 » Образовательный сайт под ключ
- 2026-07-03 » Аналитика нового поколения: как Яндекс Метрика превращает данные в управляемые конверсии
- 2026-07-03 » Прорыв в инфлюенс-маркетинге: Яндекс Директ научился оптимизировать рекламу в Telegram и MAX под реальные продажи
- 2026-07-03 » Нейросетевой дуэт: как Gorgona и Argus меняют правила игры в контекстной рекламе Яндекса
- 2026-07-03 » Рекламная революция в «Яндекс Директе»: с 14 июля текстово-графические объявления окончательно уступают место комбинаторным
- 2026-07-03 » Макс запустил тест комментариев в публичных каналах
- 2026-07-01 » Уникальность текста: когда копировать контент можно, а когда нельзя
Все мы сидим в сточной канаве, но некоторые при этом смотрят на звезды Уайльд Оскар - (1854-1900) - английский писатель |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.

Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.