Доступ к БД из web-приложений Филипп Коряка Спецвыпуск: Хакер, номер #052, стр. 052-062-5 mysql_fetch_row возвращает массив, каждый элемент которого содержит значение соответствующего поля в ряду. Единственным аргументом данной функции является идентификатор результата. Продемонстрирую все на примере: $result = mysql_query("SELECT name, price, description FROM books"); while ($row = mysql_fetch_row($result)){ print("Книга: $row[0]<BR>\n"); print("Цена: $row[1]<BR>\n"); print("<B>$row[2]</B><BR>\n"); } mysql_fetch_array предоставляет большие возможности по сравнению с mysql_fetch_row. Основная разница между этими двумя функциями в том, что mysql_fetch_row возвращает неассоциативный массив данных, а mysql_fetch_array - ассоциативный. Первым обязательным аргументом данной функции является идентификатор результата, а второй необязательный аргумент указывает тип возвращаемого результата. Всего существует три типа результатов: 1. MYSQL_ASSOC (возвращается ассоциативный массив, в котором индексами являются имена полей, а значениями - данные, которые в них расположены); 2. MYSQL_NUM (возвращает числовой массив); 3. MYSQL_BOTH (возвращает оба результата, по умолчанию используется значение MYSQL_BOTH). Пример демонстрирует все три типа результатов: while ($row = mysql_fetch_array($result, MYSQL_NUM)){ print("Книга: ", $row[0], "<BR>\n"); print("Цена: ", $row[1], "<BR>\n"); print("<B>", $row[2], "</B><BR>\n"); } while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ print("Книга: ", $row["name"], "<BR>\n"); print("Цена: ", $row["price"], "<BR>\n"); print("B>", $row["description"], "</B><BR>\n"); } while ($row = mysql_fetch_array($result)){ print("Книга: ", $row["name"], "<BR>\n"); print("Цена: ", $row[1], "<BR>\n"); print("<B>", $row[2], "</B><BR>\n"); } В последнем вызове mysql_fetch_array() отсутствует второй аргумент, поэтому, как уже было сказано, используется значение по умолчанию - MYSQL_BOTH. PHP: Дисконнект По окончании работы с БД разрываем соединение функцией mysql_close. Необязательным аргументом этой функции является дескриптор соединения, которое ты собираешься разорвать. Если дескриптор не указан, используется последнее открытое соединение. Оптимизируем запросы Основные принципы оптимизации работы с БД заключаются в исключении выполнения ненужных действий. Например, часто результат запроса к БД содержит гораздо больше информации, чем используется реально, что лучше учитывать при составлении запроса, чтобы исключить бесцельную трату процессорного времени и памяти. Например, очень распространена ситуация, в которой необходимо отобразить некоторое подмножество из результатов запроса. С таким можно столкнуться, например, при постраничном выводе прайс-листов, списков товаров и вообще когда пользователю выводится лишь некоторое фиксированное количество записей из результата запроса. В таких случаях следует использовать ключевое слово языка SQL limit, которое указывает, сколько записей нужно вернуть и с какой записи следует начать отсчет. Таким образом, если результат запроса разбивается на страницы по десять записей на каждой, то сам запрос будет выглядеть так: |