Хостинговая компания Карианг
Хостинг для Вас
Главная компания Карианг Тарифные планы Контакты Карта сайта
Наши спонсоры:
 
Cookies
Cookies

Одной из распространенных задач при выборке из базы данных является определение числа записей, которые возвращает функция mysqi_query(). Для этого предназначена функция mysqi__num_rows (), которая имеет следующий синтаксис:
int mysql_num_rows(resource result)
В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysqi_query ().

Функция mysqi_query () в случае успеха всегда возвращает дескриптор соединения и flase только в случае ошибочного синтаксиса SQL-запроса, поэтому проверка соответствия пароля в листинге 8.46 ошибочна, т. к. такая проверка будет срабатывать в любом случае, даже если число возвращенных записей окажется равным нулю.

Транзакции позволяют объединять операторы в группу и гарантировать, что все операции внутри группы будут выполнены успешно. Если часть транзакции выполняется со сбоем, результаты работы всех операторов транзакции до места сбоя отменяются, приводя базу данных к виду, в котором она была до выполнения транзакции.

Для выяснения механизма транзакций рассмотрим ситуацию, которая возможна при работе интернет-магазина, торгующего книгами. Предположим, что на складе имеется 100 экземпляров книги. При этом в один момент времени оформление покупки книги начинают два покупателя.

Первый покупатель оформляет покупку книги, при этом происходят два события: регистрируется факт покупки и обновляется количество книг, существующих на складе. Регистрация покупки разрешена, если количество книг, возвращаемое оператором SELECT, больше нуля. Далее из этого значения вычитается количество заказываемых покупателем книг и происходит обновление базы данных склада. Первый раз программное обеспечение по запросу SELECT получает количество книг на складе, равное 100.

Одновременно второй покупатель начинает оформление покупки. Запрос на выборку количества книг для него так же возвращает значение 100.

Горячие предложения
Партнеры:

 
Установка Apache | Настройка PHP | Дистрибутивы | Apache Service Monitor | Консоль управления | Командная строка | Проблемы установки | Конфигурирование | Пути к файлам | Директивы httpd.conf | Виртуальные хосты | Модули | CGI-приложения | Директивы php.ini | Ограничение ресурсов | Обработка ошибок | Ведение журнала | Обработка данных Загрузка файлов | Библиотеки расширений | Подключение MySQL | Internal Server Error | Undefined variable | Не подключается MySQL | Неизвестные ошибки | Фaйл .htaccess | Индексные страницы | Коды ответа | Кодировка | MultiViews | Запрет доступа | Перенаправление | Преобразование | .htpasswd | Одномерные массивы | Присвоение значений | Array() | Многомерные массивы | Циклы | Способы сортировки | Определение IP | Поддержка языков | Кавычки | Форматирование | Сравнение строк | Поиск в тексте | Замена в тексте | Подстроки | Символы | Хранение данных | Синтаксис | Проверка правильности | Атрибуты | Каталоги | Csv-Файлы | Плоские файлы | Сессии | Cookies | Работа с FTP | Сетевые протоколы | Электронная почта | Привилегии | Классы | Объекты | Методы |
© 2005-07 «Хостинговая компания Карианг». Все права защищены.