Анимация
JavaScript
|
Главная Библионтека Рекомендую всегда вместо mysql fetch row() использовать функцию mysql fetch array() , потому что она более универсальна и к тому же, как написано в документации, не намного медленнее. int mysql data seek(int $result, int $row number) Эта функция устанавливает указатель текущей строки в результате $result в позицию $row number, так что следующий вызов mysql fetch row() и mysql fetch array() вернет значения полей именно этой строки. Возвращает false в случае ошибки или если строки кончились. Получение информации о результате Будет полезно рассмотреть еще несколько функций, предназначенных для получения различной информации о результате запроса. string mysql field name(int $result, int $field index) Функция mysql field name() возвращает имя поля, которое расположено в результате по смещению $field index. В общем-то, применяется довольно редко, что связано с существованием функции mysql fetch array() . Примечание Итак, с помощью функции mysql field name() мы можем "переводить" числовые Х-координаты в двумерном массиве результата в их ассоциативные эквиваленты. string mysql field type(int $result, int $field offset) Эта функция похожа на mysql field name() , только возвращает не имя, а тип соответствующей колонки в результате. Им может быть, например, int, double и т. д. int mysql field len(int $result, int $field offset) Функция возвращает длину поля в результате $result. Поле, как обгчно, задается указанием его смещения. Под длиной здесь подразумевается не размер данных поля в байтах, а тот размер, который был указан при его создании. Например, если поле имеет тип varchar и было создано (вместе с таблицей) с типом varchar(100) , то для него будет возвращено 100. Примечание Описание подробностей выходит за рамки этой книги. За детальными разъяснениями вынужден отослать вас к какой-нибудь книге о языке запросов SQL. 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 Флаг Unsigned zerofill binary enum auto increment timestamp Поле обязательно должно быть проинициализировано при вставке очередной строки в таблицу Поле является первичным ключом - т. е. идентификатором строки, который будет использован для ссылок на нее Поле должно быть уникальным По этому полю построен индекс Поле может содержать бинарный блок данных, который никак не интерпретируется Таблица 26.7 (окончание) Описание Поле содержит беззнаковые числа Использовать символы с нулевым кодом вместо пробелов Поле содержит бинарные данные Поле содержит элемент перечисления, т. е. только один элемент из нескольких возможных Это поле автоматически нумеруется. Проставляется MySQLпри добавлении новой записи так, чтобы в таблице никогда не образовывалось нескольких строк с одинаковым значением этого поля В поле динамически проставляется текущее время при добавлении или изменении записи string mysql field table(int $result, int $field offset) Возвращает имя таблицы, из которой было извлечено поле со смещением $field offset в результате $result. Как уже говорилось, результат запроса мо- жет быть получен из нескольких таблиц, так что вот вам средство для извлечения имени таблицы по номеру поля. Пример использования функций поддержки MySQL Ниже приводится пример комплексного использования описанных функций. <? Соединяемся с сервером на локальной машине mysql connect("localhost"); Выбираем текущую базу данн1х mysql select db("my database"); Получаем все данн1е таблица: $result = mysql query("SELECT * FROM tbl"); Запрашиваем идентификатор данн1х о полях таблица: $fields = mysql num fields($result); Узнаем число записей в таблице $rows = mysql num rows($result); Получаем имя таблица: (правда, его и так знаем, но все же...) $table = mysql field table($result,0); echo "Таблица $table содержит $fields колонок и $rows строк<BR>"; echo "Таблица содержит следующие поля:<BR>"; "Проходимся" по всем полям и выводим информацию о них for($i=0; $i<$fields; { $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<BR>\n"; ?> Уникальные идентификаторы в MySQL Обгчно в таблице содержится довольно много записей с разными значениями полей. Встает проблема выбора одной конкретной записи из этого массива. В рассмотренном нами примере таблицы с информацией о гражданах, пожалуй, запись можно однозначно идентифицировать по фамилии человека. Ну а если встретятся однофамильцы? Тогда по имени. А если же и имена совпадут? Ну, тогда...... Вы видите, насколько это все неудобно. Поэтому во избежание недоразумений подобного рода в таблицу вводят еще одно вспомогательное поле (колонку), назвав ее, ска- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 [ 124 ] 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |