Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
оордината чаще всего будет ас- 
социативной — т. е. в ней задается не число, а имя столбца. 
Функция универсальна: с ее помощью можно "обойти" весь результат по одной ячей- 

ке. И хотя это не возбраняется, но делать, однако, не рекомендуется, т. к. 
mysql_result() работает довольно медленно. Лучше воспользоваться функциями, 
которые описываются дальше. 

Часть IV. Стандартные функции PHP 374 
Получение целой строки результата 
Разработчики MySQL предусмотрели другой, более быстрый, способ получения ре- 
зультата. Он чем-то похож на работу с файлами: появляется понятие текущей 
записи 
результата, и следующая операция считывания передвигает этот указатель на одну 
позицию вперед. Также можно установить указатель на любую указанную запись. 
array mysql_fetch_row(int $result) 
Функция возвращает массив-список со значениями полей очередной строки результа- 

та $result. Если указатель текущей позиции результата был установлен за послед- 

ней записью (то есть строки кончились), возвращает false. Текущая позиция 
сдвига- 
ется к следующей записи, так что очередной вызов mysql_fetch_row() вернет 
следующую строку результата. 
Эту функцию чаще всего применяют в таком контексте: 
$r=mysql_query("select * frim OurTable where age<30"); 
while($Row=mysql_fetch_row($r)) { 
// обрабатываем строку $Row 
} 
Как видим, цикл оборвется, как только строки закончатся, т. е. когда 
mysql_fetch_row() вернет false. 
Работать с числовыми индексами полей, как до сих пор предлагалось, согласитесь, 
не 
очень-то удобно. Гораздо предпочтительнее было бы использовать для адресации 
поля внутри результата его имя. Функция mysql_fetch_array() как раз и извлека- 
ет из результата очередную запись и помещает ее в ассоциативный массив. 
array mysql_fetch_array(int $result) 
Функция mysql_fetch_array() возвращает очередную строку результата в виде 
ассоциативного массива, где каждому полю сопоставлен элемент с ключом, совпа- 
дающим с именем поля. Дополнительно в массив записываются элементы с число- 
выми ключами и значениями, соответствующими величинам полей с этими индекса- 
ми. В возвращаемом массиве они размещаются сразу за элементами с "обычными" 
ключами. 
Может возникнуть вопрос: зачем вообще тут нужны числовые индексы. Ответ 
прост: дело в том, что в результате выборки в действительности могут присут- 
ствовать поля (фактически, колонки) с одинаковыми именами, но, соответст- 
венно, с различными индексами. Это происходит тогда, когда выборка в 
SELECT производится одновременно из нескольких таблиц (язык SQL это по- 
зволяет). Думаю, в простейших приложениях такое случается нечасто. 

Глава 26. Работа с базой данных MySQL 375 
Рекомендую всегда вместо mysql_fetch_row() использовать функцию 
mysql_fetch_array(), потому что она более универсальна и к тому же, как напи- 
сано в документации, не намного медленнее. 
int mysql_data_seek(int $result, int $row_number) 
Эта функция устанавливает указатель текущей строки в результате $result в пози- 

цию $row_number, так что следующий вызов mysql_fetch_row() и 
mysql_fetch_array() вернет значения полей именно этой строки. Возвращает 
false в случае ошибки или если строки кончились. 
Получение информации 
о результате 
Будет полезно рассмотреть еще несколько функций, предназначенных для получения 
различной информации о результате запроса. 
string mysql_field_name(int $result, int $field_index) 
Функция mysql_field_name() возвращает имя поля, которое расположено в ре- 
зультате по смещению $field_index. В общем-то, применяется довольно редко, что 
связано с существованием функции mysql_fetch_array(). 
Итак, с помощью функции mysql_field_name() мы можем "переводить" чи- 
словые X-координаты в двумерном массиве результата в их ассоциативные эк- 
виваленты. 
string mysql_field_type(int $result, int $field_offset) 
Эта функция похожа на mysql_field_name(), только возвращает не имя, а тип
 
<<-[Весь Текст]
Страница: из 287
 <<-