Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Программирование на PHP в примерах

Шаг 15. Функции работы с MySQL, часть 4

Функции (MYSQL_FETCH_FIELD() и MYSQL_FETCH_LENGTHS) возвращают служебную информацию. MYSQL_FETCH_FIELD возвращает объект, содержащий характеристики полей, участвовавших в запросе. Например,

//где-то выше выполнен селект:
$res=mysql_db_query("books","select * from books");
//теперь, имея идентификатор QUERY-ресурса, получаем служебную информацию
$i=0;
while($i<mysql_num_fields($res)){
//получим количество полей в запросе
$field=mysql_fetch_field($res,$i)
//и выводим по каждому полю информацию
foreach(($vars=get_object_vars($field)) as $k => $v) {
echo "$k => $v<br>";
}
$i++;
}

В результате получим что-то вроде этого:

name => id
table => books
def =>
max_length => 1
not_null => 1
primary_key => 1
multiple_key => 0
unique_key => 0
numeric => 1
blob => 0
type => int
unsigned => 0
zerofill => 0

и т.д. для каждого поля запроса (мы организовали цикл по всем полям - см. код). Что мы тут имеем (в данном случае, для поля 'ID' таблицы 'BOOKS')?

Функции MYSQL_FETCH_FIELDS были переданы 2 параметра: идентификатор результата SQL-запроса и номер поля в запросе. Функция вернула объект со следующими полями:

  • Name - имя поля в запросе (или alias, если он использован);
  • table - сама таблица;
  • def - НЛО какое-то! я так и не выяснил, что это за значение; это не DEFAULT-атрибут поля таблицы (документация и php.net вместе с zend.com-ом молчат как рыба об лед! :-( );
  • max_length - максимальная длина среди результатов (имеется в виду не объявленная при создании таблицы длина поля, а количество символов самого длинного значения для данного поля таблицы, полученное при данном запросе.

Остальные атрибуты, я думаю, очевидны. Напомню лишь по последнему значению: zerofill означает, что для цифрового поля при выводе (select-е) вместо лидирующих пробелов будут нули.

Теперь о функции MYSQL_FETCH_LENGTHS. Здесь все совсем просто. Единственный параметр - все тот же идентификатор ресурсов, возвращаемый query-функцией. На выходе - обычный массив, заполненный длинами для всех полей текущей строки запроса к базе.

Если взять i-е поле запроса, то

mysql_fetch_fields($res,$i) == MAX( mysql_fetch_length($res) [$i] )

где MAX - обозначение процедуры поиска максимального значения среди i-ых элементов всех массивов, возвращаемых MYSQL_FETCH_LENGTH при переборе всех строк, полученных в запросе к базе.

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











helloworld.ru © 2001-2021
Все права защищены