Функции обработки результатов запроса



Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP:

mysql_result() - получить необходимый элемент из набора записей;

mysql_fetch_array() - занести запись в массив;

mysql_fetch_row() - занести запись в массив;

mysql_fetch_assoc() - занести запись в ассоциативный массив;

mysql_fetch_object() - занести запись в объект.

Также можно определить количество содержащихся записей и полей в результате запроса. Функция mysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:

$q = mysql_query("SELECT * FROM mytable");

echo "Втаблице mytable ".mysql_num_rows($q)." записей";

Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:

$q = mysql_query("SELECT * FROM mytable");

echo "Втаблице mytable ".mysql_num_fields($q)." полей ";

У нас также есть возможность узнать значение каждого поля. Это можно сделать с помощью следующей функции:

mysql_result (int $result, int $row, mixed $field);

Параметр функции $row задает номер записи, а параметр $field - имя или порядковый номер поля.

Предположим, SQL-запрос вернул следующий набор данных:

Email                 Name Last_Name

------------------------------------

ivanov@mail.ru Ivan Ivanov

petrov@mail.ruPetrPetrov

 

Вывести это в браузер можно следующим образом:

$rows = mysql_num_rows($q);

$fields = mysql_num_fields($q);

echo "<pre>";

for ($c=0; $c<$rows; $c++) {

for ($cc=0; $cc<$fields; $cc++) {

echo mysql_result($q, $c, $cc)."\t";

echo "\n";

}

}echo "</pre>";

Следует отметить, что функция mysql_result() универсальна: зная количество записей и количество полей, можно "обойти" весь результат, но в тоже время, скорость работы данной функции достаточно низка. Поэтому, для обработки больших наборов записей рекомендуется использовать функции mysql_fecth_row(),mysql_fecth_array(), и.т.д.

Функция mysql_fecth_row(int $res) получает сразу всю строку, соответствующую текущей записи результата $res. Каждый следующий вызов функции перемещает указатель запроса на следующую позицию (как при работе с файлами) и получает следующую запись. Если более нет записей, то функция возвращает FALSE. Пример использования данной функции:

$q = mysql_query("SELECT * FROM mytable WHERE month=\"$db_m\" AND day=\"$db_d\");

for ($c=0; $c<mysql_num_rows($q); $c++)

{

$f = mysql_fetch_row($q);

echo $f;

}

Использовать функцию mysql_fecth_row() не всегда удобно, так как значения всех полей одной записи находятся все в одной строке. Удобнее использовать функцию mysql_fetch_array(), которая возвращает ассоциативный массив, ключами которого будут имена полей.

Функция mysql_fecth_array(int $res [, int $result_type]) возвращает не ассоциативный массив, а массив, заданный необязательным параметром $result_type, который может принимать следующие значения:

MYSQL_ASSOC - возвращает ассоциативный массив;

MYSQL_NUM -возвращает массив с числовыми индексами, как в функции mysql_fecth_row();

MYSQL_BOTH - возвращает массив с двойными индексами, то есть вы можете работать с ним, как с ассоциативным массивом и как со списком (MYSQL_BOTH - это значение по умолчанию для параметра $result_type.

В PHP есть функция, возвращающая ассоциативный массив с одним индексом:

mysql_fetch_assoc(int $res);

Фактически, данная функция является синонимом для mysql_fetch_array($res, MYSQL_ASSOC);

Пример использования функции mysql_fecth_array():

$q = mysql_query("SELECT * FROM mytable WHERE month=\"$db_m\" AND day=\"$db_d\");

for ($c=0; $c<mysql_num_rows($q); $c++)

{

$f = mysql_fetch_array($q);

echo "$f[email] $f[name] $f[month] $f[day] <br>";

}

Как видно, использовать функцию mysql_fetch_array() намного удобнее, чем mysql_fetch_row().

 

Задание на лабораторную работу

 

1. Изучить теоретические сведения лабораторной работы

2. Изучить пример выданный преподавателем.

3. Создать таблицы БД, разработанной на практике, при помощи PHPMyAdmin.

4. Осуществить отображение таблиц этой БД при помощи PHP.


 


Дата добавления: 2018-04-04; просмотров: 301; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!