Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Если запрос, выполненный с помощью функции 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
------------------------------------
[email protected] Ivan Ivanov
[email protected] Petr Petrov
Вывести это в браузер можно следующим образом:
$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().
Дата публикования: 2015-07-22; Прочитано: 248 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!