Страница 4 из 12 Получение рядов данных: правила эффективной работы Вторая проблема нашего кода - это использование функции sql_fetch_row() для получения рядов. Как результат своей работы эта функция возвращает лишь пронумерованный массив. Однако существует ещё и функция sql_fetch_array(), которая возвращает два массива: пронумерованный и ассоциативный: <?php $row = sql_fetch_array ($result); print $row[1]; // Второй столбец print $row[name]; // Столбец name - имя ?> Примечание: Существуют разные точки зрения на целесообразность использования одинарных кавычек при вставке строковых аргументов. В приведённом примере (столбец name) и далее по статье они не используются. Какая из функций более удобна для разработчика? Ассоциативные массивы позволяют редактору кода ясно и однозначно понять, какая именно выборка из БД будет осуществляться в каждом конкретном случае. Например: <?php if (sql_num_rows ($result) <= 0) { print "Ошибка: не найдено ни одного ряда"; exit; } while ($row = sql_fetch_array ($result)) { print "$row[name]: $row[phone_number]\n<br>\n"; } ?> Применение sql_fetch_row($result) Итак, функция sql_fetch_row() имеет целую тонну недостатков. Однако, существует ситуация, где её можно поставить без всякого ущерба "прозрачности" кода: когда sql-запрос формируется пользователем. До настоящего момента мы рассматривали примеры с заранее известными запросами и определёнными разработчиком. Но иногда возникает необходимость в запросе, сформированном самим пользователем. В таких случаях разработчику неизвестно количество столбцов в выборке. Здесь для их эффективной обработки полезно использовать функцию sql_fetch_row() в сочетании с count(): <?php for ($i = 0; $i < count($row); $i++){ print "Столбец". ($i + 1). $row[$i]. "\n<BR>\n"; } ?> |