Еще одним вариантом является использование функции 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, созданным в предыдущем сценарии. Увиденное удивит вас!
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Обработка результирующего набора. Продолжение.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Обработка результирующего набора | Все о MySQL. Обработка ошибок |