Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 146) Курс PHP: Работа с базами данных


Школа программирования

146) Курс PHP: Работа с базами данных

Последний выпуск по PHP был N 141.

При создании крупных интернет-систем PHP практически всегда стыкуется с базами данных, благодаря чему удается хранить и быстро обрабатывать большие объемы информации, не заботясь о методах доступа к ним и надежной сохранности.

Чаще всего PHP объединяется с популярной и свободно распространяемой СУБД MySQL, доступ к которой сегодня предлагают практически все российские провайдеры. Администрирование MySQL осуществляется обычно через веб-интерфейс MySQLAdmin, который позволяет из браузера создавать базы данных на своем хостинге, таблицы в них, проектировать структуру таблиц и полей, взаимосвязи между ними и т. д.

Способы построения БД MySQL мы не будем рассматривать. Изучим способ подключения к БД на сервере провайдера и ее обработку из PHP сценария.

Перед началом работы с БД к ней надо подключиться. Для этого предназначена функция

mysql_connect (server, username, password);

В большинстве случаев достаточно использовать три параметра - строку с адресом базы MySQL в сети, логин и пароль к ней (все они выдаются провайдером). Например:

mysql_connect("db.мой-провайдер.ru:3306", "логин", "пароль");

Функция возвращает значение, которое в дальнейшем однозначно идентифицирует данное соединение с БД. Его надо сохранить.

$conn = mysql_connect("db.мой-провайдер.ru:3306", "логин", "пароль");

Если соединиться с MySQL не удалось, функция возвращает FALSE.

Следующий шаг - подключение к конкретной пользовательской БД. Оно выполняется с помощью функции

mysql_select_db(database_name)

которая возвращает TRUE или FALSE в зависимости от успешности соединения.

mysql_select_db("mydogs"); // mydogs - имя-таблицы-с-любимыми-собачками

После этого можно организовывать прикладные запросы к текущей выбранной таблице.

По окончании работы с системой MySQL ее надо закрыть вызовом функции mysql_close() :

mysql_close($conn); // $conn - ранее полученный идентификатор соединения

* Простой SQL-запрос выполнятся функцией mysql_query(), возвращающей TRUE/FALSE в зависимости от успешности исполнения запроса, сам запрос задается в виде текстовой строки как ее параметр. Допустим, в нашей таблице mydogs хранится список имен любимых собачек (поле DOGS), описание их породы (поле DOGTYPE) и возраст (AGE). Мы хотим вставить в базу новую запись о новой собачке. Соответствующая команда SQL может выглядеть так:

  INSERT INTO mydogs (DOGS,GODTYPE,AGE) VALUES ( 'Тузик' , 'Боксер' , 2)

Запишем ее в виде строки в некоторую переменную:

  $query = "INSERT INTO mydogs (DOGS,GODTYPE,AGE) VALUES ( 'Тузик' , 'Боксер' , 2)";

Вместо конкретных элементов этой строки можно задавать, что немаловажно, ссылки на переменные:

  $dog = "Тузик";
  ...
  $query = "INSERT INTO mydogs (DOGS,GODTYPE,AGE) VALUES ( '$dog' , 'Боксер' , 2)";

Теперь можно данный запрос выполнить:

mysql_query($query);

В результате в таблицу mydogs добавится новая запись.

* Для просмотра всего или частичного содержимого базы предварительно надо выполнить к ней запрос на выделение нужного набора значений (с помощью SQL).

  $query = "SELECT * FROM mydogs";
  $result = mysql_query($query);

Важно! Для SQL-команд SELECT, SHOW, EXPLAIN и DESCRIBE функция mysql_query() в случае удачи возвращает не TRUE, а идентификатор ресурса, связанный с временно выделенным по данному запросу набору данных.

Наконец, для просмотра сформированного по запросу набора можно воспользоваться функцией

mysql_fetch_array (result, type)

которая возвращает массив, в который автоматически будет разложена очередная (автоматически выделенная, взятая по порядку) запись из полученного по запросу набора. Второй параметр, type, указывает, нужен ли массив, состоящий только из значений (MYSQL_NUM), значений и ассоциированных с ними индексов (MYSQL_BOTH) или только индексов (MYSQL_ASSOC).

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

Например:

  $query = "SELECT * FROM mydogs";
  $result = mysql_query($query);

  while ( $row = mysql_fetch_array($result, MYSQL_NUM) ) {

  // в строке $row - очередная запись из базы

  }

Данная схема напоминает способ обработки файла - он открывается, и из него последовательно получаются (считываются) записи, пока он не закончится.

Обращаться к полям записи можно, индексируя массив $row - так, элемент $row[0] соответствует значению поля DOGS, элемент $row[1] - полю DOGTYPE, элемент $row[2] - полю AGE (при условии, конечно, что и в таблице mydogs данные поля следуют в таком же порядке).

На этом базовый курс по PHP закончен.


(c) 2004-2006 Сергей Бобровский bobrovsky as russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Неофициальный сайт поддержки (со срочными вопросами - сюда):
www.prog-begin.net.ru.


Вышел мой учебный курс "Технологии Delphi. Разработка приложений для бизнеса".
http://shop.piter.com/book/978591180282/

Учебный курс рассчитан не только на разработчиков, но и на всех тех, кто хочет стать ИТ-менеджером. Для этого как минимум нужно иметь общее представление о современных технологиях разработки и их истории и владеть соответствующей терминологией.
В книге описаны десятки технологий, каждой из которых посвящены отдельные книги. Таким образом, купив одну мою книгу, вы существенно сэкономите :) В книге полностью описан язык Delphi (версия 2006, полностью совместимая с Turbo Delphi) для обеих платформ - Win32 и .NET. Охвачены также темы работы с файлами на этих платформах, создания файл-серверных, клиент-серверных, распределенных приложений, веб-программ (Indy, ASP.NET, веб-сервисы). Описаны языки SQL и OCL. Немало глав посвящены истории программирования и различных технологий. Особое внимание уделено созданию программ с помощью технологии ECO и языка моделирования UML - программы фактически рисуются, и теперь даже для создания корпоративных приложений и их переноса в Интернет не обязательно знать программирование!
Отдельная часть отведена технологиям организации групповой работы, управления требованиями, контроля версий, локализации и тестирования.
Тут подробнее про книгу.

Другие мои книги, которые пока доступны в продаже:


Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное