Еще одним вариантом является использование функции mysql_fetchobject() , которая выбирает строки как объекты PHP. Свойства объекта соответствуют значениям различных столбцов.
Листинг 21.22.
<html> <head>
<basefont face="Arial"> </head> <body> <?php
// задать переменные доступа к серверу $host = "localhost"; $user= "joe"; $pass = "secret";
$db = "db123";
// открыть соединение с базой данных
$connection = mysql_connect($host, $user, $pass) or die (" Невозможно подключиться!"); // выбрать базу данных
mysql_select_db($db) or die (" Невозможно выбрать рабочую базу дан­ных!");
// задать строку SQL- запроса $query = "SELECT * FROM employees";
// выполнить запрос и получить результирующий набор
$result = mysql_query ($query) or die (" Ошибка в запросе: $query. " . mysql_error ());
// содержит ли результирующий набор строки? if (mysql_num_rows($result) > 0)
{
// да
// просмотр результирующего набора // отформатировать результаты в табличном виде echo "<table cellpadding=10 border=1>"; while($row = mysql_fetch_object($result))

{

echo "<tr>";
echo "<td>" $row->uname "</td>"; echo "<td>" $row->fname "</td>"; 
echo "</tr>";
}
echo "</table>";
}
else
{
// нет
// распечатать сообщение о состоянии echo " Строк не обнаружено !";
}
// закрыть соединение mysql_close($connection);
?>
</body> </html>
Узнать еще больше о свойствах полей из результирующего набора можно с помощью функции mysql_fetch_field() , которая возвращает объект поля, содержащий подробную информацию об имени, длине и типе данных (среди прочих данных). Рассмотрим следующий пример.
Листинг 21.23.
<html> <head>
<basefont face="Arial">
</head>
<body>
<?php
// задать переменные доступа к серверу
$host = "localhost";
$user= "joe"; $pass = "secret";
$db = "db123";
// открыть соединение с базой данных
$connection = mysql_connect($host, $user, $pass) or die (" Невозможно
подключиться!");
// выбрать базу данных
mysql_select_db($db) or die (" Невозможно выбрать рабочую базу дан­ных!");
// задать строку SQL- запроса $query = "SELECT * FROM employees";
// выполнить запрос и получить результирующий набор
$result = mysql_query ($query) or die (" Ошибка в запросе: $query. " . mysql_error ());
// открыть внешний список ( для полей) echo "<ol>";
// получить список полей в результирующем наборе // и просмотреть их
for ($x=0; $x<mysql_num_fields($result); $x++)
{
// выборка каждого поля в качестве объекта
// и распечатать имя поля
$obj = mysql_fetch_field($result, $x);
echo "<li>" . $obj->name . "</li>";
// открыть внутренний список ( для свойств полей)
echo "<ul>";
// распечатать список всех свойств объектов и значений // как подчиненный список 
$vars = get_object_vars($obj); foreach ($vars as $key=>$value)
{
echo "<li>$key : $value</li>";
}
// закрыть внутренний список
echo "</ul>"; // закрыть внешний список echo "</ol>"; // закрыть соединение mysql_close($connection);
?>
</body> </html>
Как видим, функция mysql_fetch_field() принимает один аргумент, смещение поля в результирующем наборе, и возвращает разнообразную информацию, имеющую отношение к этому полю. Эта информация представляется в виде свойств объекта и может быть получена с использованием стандартной ООП-нотации, как это было в случае с предыдущей функцией mysql_fetch_object() .
Полученный предыдущим сценарием вывод представлен на рис. 21.3.
Обработка результирующего набора
 В дополнение к этим функциям, PHP также включает большое количество функций обработки результирующих наборов. Эти функции позволяют переходить к различным 
полям результирующего набора и получать информацию о количестве полученных ре­зультатов, количестве обработанных запросом строк, количестве, наименовании, типе данных полей записи и т.д. В табл. 21.1 дается перечень функций такого типа.
Объектный урок
С помощью методов print_r() и var_dump() можно "заглянуть внутрь" любого объекта PHP. Попробуйте сделать это с объектом $obj, созданным в предыдущем сценарии. Увиденное удивит вас!
Обработка результирующего набора