| |
соответствующей колонки в результате. Им может быть, например, int, double и
т. д.
int mysql_field_len(int $result, int $field_offset)
Функция возвращает длину поля в результате $result. Поле, как обычно, задается
указанием его смещения. Под длиной здесь подразумевается не размер данных поля
в
байтах, а тот размер, который был указан при его создании. Например, если поле
имеет тип varchar и было создано (вместе с таблицей) с типом varchar(100), то
для него будет возвращено 100.
Описание подробностей выходит за рамки этой книги. За детальными разъяс-
нениями вынужден отослать вас к какой-нибудь книге о языке запросов SQL.
Часть IV. Стандартные функции PHP 376
string mysql_field_flags(int $result, int $field_offset)
Эта функция возвращает флаги, которые были использованы при создании указанно-
го поля в таблице. Возвращаемая строка представляет собой набор слов,
разделенных
пробелами, так что вы можете преобразовать ее в массив при помощи функции
explode():
$Flags=explode(" ",mysql_field_flags($r,$field_offset));
Флаги, которые поддерживаются MySQL в настоящий момент, перечислены в табл.
26.7.
Таблица 26.7. Флаги типов полей
Флаг Описание
not_null Поле обязательно должно быть проинициализировано при
вставке очередной строки в таблицу
Primary_key Поле является первичным ключом — т. е. идентификатором
строки, который будет использован для ссылок на нее
Unique_key Поле должно быть уникальным
Multiple_key По этому полю построен индекс
Blob Поле может содержать бинарный блок данных, который никак
не интерпретируется
Таблица 26.7 (окончание)
Флаг Описание
Unsigned Поле содержит беззнаковые числа
zerofill Использовать символы с нулевым кодом вместо пробелов
binary Поле содержит бинарные данные
enum Поле содержит элемент перечисления, т. е. только один эле-
мент из нескольких возможных
auto_increment Это поле автоматически нумеруется. Проставляется
MySQLпри добавлении новой записи так, чтобы в таблице
никогда не образовывалось нескольких строк с одинаковым
значением этого поля
timestamp В поле динамически проставляется текущее время при до-
бавлении или изменении записи
string mysql_field_table(int $result, int $field_offset)
Возвращает имя таблицы, из которой было извлечено поле со смещением
$field_offset в результате $result. Как уже говорилось, результат запроса мо-
Глава 26. Работа с базой данных MySQL 377
жет быть получен из нескольких таблиц, так что вот вам средство для извлечения
имени таблицы по номеру поля.
Пример использования функций поддержки MySQL
Ниже приводится пример комплексного использования описанных функций.
// Соединяемся с сервером на локальной машине
mysql_connect("localhost");
// Выбираем текущую базу данных
mysql_select_db("my_database");
// Получаем все данные таблицы
$result = mysql_query("SELECT * FROM tbl");
// Запрашиваем идентификатор данных о полях таблицы
$fields = mysql_num_fields($result);
// Узнаем число записей в таблице
$rows = mysql_num_rows($result);
// Получаем имя таблицы (правда, мы его и так знаем, но все же...)
$table = mysql_field_table($result,0);
echo "Таблица '$table' содержит $fields колонок и $rows строк ";
echo "Таблица содержит следующие поля: ";
// "Проходимся" по всем полям и выводим информацию о них
for($i=0; $i<$fields; $i++) {
$type = mysql_field_type($result, $i);
$name = mysql_field_name($result, $i);
$len = mysql_field_len($result, $i);
$flags = mysql_field_flags($result, $i);
echo "$type $name $len $flags \n";
}
?>
Уникальные идентификаторы в MySQL
Обычно в таблице содержится довольно много записей с разными значениями полей.
Встает проблема выбора одной конкретной записи из этого массива. В рассмотрен-
ном нами примере таблицы с информацией о гражданах, пожалуй, запись можно од-
нозначно идентифицировать по фамилии человека. Ну а если встретятся однофа-
мильцы? Тогда по имени. А если же и имена совпадут? Н
|
|