Извлечение данных

Хотя при изучении данного раздела снова будет использоваться функция
mysql_db_query ( ) , извлечение данных отличается от сохранения тем, что из
влекаемая информация должна быть присвоена переменной. Рассмотрим этот
процесс поэтапно.

Данные из базы можно прочитать с помощью простого запроса:


$Query="SELECT * from $TableName";

Звездочка эквивалентна понятию «все» (то есть требуется выбрать все из
столбца $TableName). Этой короткой инструкции часто вполне достаточно для
извлечения данных.

Однако запрос можно ограничить, указав только часть полей, например
SELECT FirstName, Comments from $TableName. Этот запрос дает задание извлечь
информацию только из этих двух столбцов (имя и комментарий).

Другой способ ограничить запрос написать чтонибудь вроде S.ELECT * from
$TableName where (FirstName= ‘Larry’). Здесь мы запрашиваем информацию
из всех столбцов, но только из тех строк, где в столбце с указанием имени име
ется значение Larry. Хорошие примеры того, как в SQL эффективно и гибко
используется всего несколько терминов.

Основное отличие извлечения данных от записи их в базу состоит в том, что
запрос необходимо обрабатывать подругому. Я предпочитаю присваивать ре
зультаты запроса переменной:


$Result=mysql_db_query($DBName, $Query, $Link);

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


while($Row=mysql_fetch_array($Result)) {
statements;
}

Каждая итерация цикла будет превращать следующую строку информации
из запроса (сохраненную в переменной $Result) в массив с названием $Row.
Этот процесс будет продолжаться, пока не останется больше строк с информа
цией. Лучший способ понять данную систему написать сценарий, который
считывает информацию из таблицы Feedback (не забудьте заполнить таблицу
данными с помощью формы form.html).

Извлечение данных из таблицы

  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. Начните со стандартного HTMLзаголовка.

  3. <HTMLxHEADxTITLE>Retrieving Data from a Database</TITLEx/HEADxBODY>

  4. Откройте PHPраздел страницы и задайте переменные для доступа в базу
    данных.

  5. <?php
    // Установка значения переменных для доступа к базе данных.
    $Host = "localhost";
    $User = "user";
    $Password = "password";
    $DBName = "NewDatabase";
    $TableName = "Feedback";

  6. Соединитесь с сервером базы данных, напишите и выполните запрос.

  7. $Link = mysql_connect ($Host, $User, $Password);
    $Query = "SELECT * from $TableName";
    $Result = mysql_db_query ($DBName, $Query, $Link);

    Этот запрос прост и полезен. Как было упомянуто выше, его результаты
    будут сохранены в переменной, которую мы позже поместим в цикл.

  8. Создайте HTMLтаблицу для выведения на экран результатов запроса.

  9. print ("<TABLE BORDER=1 WIDTH="75%" ,CELLSPACING=2
    ~CELLPADDING=2 ALIGN=CENTER>n");
    print ("<TR ALIGN=CENTER VALIGN=TOP>n");
    print ("<TD ALIGN=CENTER VALIGN=TOP>Name</TD>n");
    print ("<TD ALIGN=CENTER VALIGN=TOP>Email Address</TD>n");
    print ("<TD ALIGN=CENTER VALIGN=TOP>Comments</TD>n");
    print ("</TR>n");

    Так как мы извлекаем информацию из таблицы и выводим ее на экран в виде
    кода HTML, стоит поместить данные и в HTMLтаблицу. Тогда страница будет
    выглядеть аккуратно.

  10. Создайте цикл, извлекающий строки из базы данных, пока они не кон
    чатся.

  11. while ($Row = mysql_fetch_array ($Result)) {

    Цикл помещает в переменную $Row массив, состоящий из первой строки
    таблицы в переменной $Result. Затем исполняются соответствующие коман
    ды (шаг 7). При обращении к строке mysql_f etch_array ($Result) на очеред
    ном проходе цикла переменная $Row получает следующую строку. Цикл функ
    ционирует, пока не останется строк с информацией.

  12. Распечатайте информацию из базы данных в виде HTMLтаблицы.


  13. print ("<TR ALIGN=CENTER VALIGN=TOP>n");
    print ("<TD ALIGN=CENTER VALIGN=TOP>$Row[FirstName]
    $Row[LastName]</TD>n") ;
    print ("<TD ALIGN=CENTER VALIGN=TOP>$Row[EmailAddress]</TD>n");
    print ("<TD ALIGN=CENTER VALIGN==TOP>$Row[Comments]</TD>n"} ;
    print ("</TR>n");


    Так как была использована функция mysql_f etch_array ( ) , вы можете обра
    щаться к каждому отдельному столбцу в извлеченной из базы данных строке
    точно так же, как к массиву. Ключи массива названия столбцов таблицы, то
    есть имя, фамилия, адрес электронной почты и комментарии (конечно, назва
    ния полей даются на английском языке и с обязательным соблюдением реги
    стра букв).


  14. Закройте строку HTMLтаблицы и цикл while.


  15. print ("</TR>n");
    } .

    Еще раз подчеркнем, что этот цикл получает строку данных из таблицы БД,
    присваивает ее массиву $Row, затем печатает строку HTMLтаблицы.

  16. Отключитесь от системы MySQL, закройте HTMLтаблицу, РНРраздел
    и саму HTMLстраницу.

  17. mysql_close ($Link);
    print ("</TABLE>n");
    ?></BODYx/HTML>

  18. Сохраните сценарий как DisplayDB.php (листинг 11.5), загрузите его на
    сервер и протестируйте в браузере (рис. 11.6).
  19. Листинг 11.5 т SQLзапрос на извлечение всех данных из таблицы очень
    прост, но, чтобы получить все данные* необходимо создать цикл.


    1 <HTML>
    2 <HEAD>
    3 <TITLE>Retrieving Data from a Database</TITLEx/HEAD>
    4<BODY>
    5<?php
    6// Установка значения переменных для доступа к базе данных.
    7$Host = "localhost";
    8 $User = "user";
    9$Password = "password";
    10$DBName = "NewDatabase";
    11 $TableName = "Feedback";
    12
    13$Link = mysql_connect ($Host, $User, $Password);
    14
    15 $Query . "SELECT * from $TableName";
    16$Result = myeql_db_query ($DBName, $Query, $Link);

    17
    18 // Создание таблицы.
    19print ("<TABLE BORDER=1 WIDTH="75%" CELLSPACING=2 CELLPADDING=2
    ALIGN=CENTER>n");
    20print ("<TR ALIGN=CENTER VALIGN=TOP>.n") ;
    21 print ("<TABLE BORDER=1 WIDTH="75%" CELLSPACING=2 CELLPADDING=2
    22 print ("</TR>n");
    23 // Получение результатов из базы данных.
    24 while ($Row = mysql_fetch_array ($Result)) {
    25
    26 $User = "user";
    27 print ("<TR ALIGN=CENTER VALIGN=TOP>n");
    28 print ("<TD ALIGN=CENTER VALIGN=TOP>$Row[FiretName]
    29 $Row[LaetName]</TD>n?);
    30 print ("<TD ALIGN=CENTER VALIGN=TOP>$Row[EmailAddreee]</TD>n")i

    31 print ("<TD ALIGN=CENTER VALIGN=TOP>$Row[Commente]</TD>n");
    32 print ("</TR>n");
    33}
    34mysql_close ($Link);
    35print ("</TABLE>n");
    36?>
    37</BODY>
    38</HTML>

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: