Анимация
JavaScript
|
Главная Библионтека жем, id. Этот самый id уникален у каждой записи, поэтому мы можем, зная id нужного нам человека, тут же получить его данные. Кроме того, если нам понадобится, например, зафиксировать в таблице еще и родственные связи людей (кто является чьим отцом, например), мы можем завести в ней еще одно поле - parent id, в котором будет храниться id родителя конкретного человека. Таким образом, описанная техника оказывается довольно удобной. Пусть теперь мы хотим добавить в таблицу сведения о еще одном человеке. Логично было бы, чтобы его id проставлялся автоматически. Возникает вопрос: как нам этот id вгчислить? В самом деле, мы же не знаем, какие id в таблице в данный момент "свободны"... Можно использовать для этой цели текущее время в секундах. Но вдруг именно в данную секунду кто-то еще точно так же добавляет в базу данных запись? Можно, конечно, взять максимальный id, прибавить к нему единичку и занести в таблицу. Но где гарантия, что, опять же в этот момент другой администратор не проделал ту же операцию - до того, как вы добавили свою информацию, но после того, как определили максимальный id? Как раз для решения этой проблемы и предназначена в MySQL возможность под названием auto increment. А именно, при создании таблицы мы можем какое-нибудь ее поле (в нашем случае как раз id) объявить так: ИмяПоля int auto increment primary key Немного длинновато, но это стоит того! Теперь любая операция insert автоматически проставит у добавленной записи поле ИмяПоля так, чтобы оно было уникально во всей таблице - MySQL это гарантирует. В простейшем случае - просто увеличит на 1 некий внутренний счетчик, глобальный для всей таблицы, и занесет его новое значение в нужное поле записи. Причем гарантируется, что никакие проблемы с совместным доступом к таблице просто не могут возникнуть, как это произошло бы, используй мы "кустарные" способы. Получить только что вставленный идентификатор можно при помощи функции mysql insert id() . int mysql insert id([int $link identifier]) Функция возвращает непосредственно перед ее вызовом сгенерированный идентификатор записи для автоинкрементного поля после выполнения команды insert. Вызывать ее разумно только сразу после выполнения инструкции insert, например, в таком контексте: mysql query("insert into Таблица(поле1, поле2) values(aa,bb)"); $id=mysql insert id(); Теперь к только что вставленной записи можно обратиться, используя идентификатор $id: $r=mysql query("select * from Таблица where id=$id"); $Row=mysql fetch array($r); Работа с таблицами Вот и подходит к концу наш разговор о функциях поддержки MySQL в PHP. Мы познакомились с большинством функций, которые встроены в PHP для взаимодействия с этой СУБД. Мы еще вернемся к MySQL в части V книги. Подводя черту, имеет смысл рассмотреть несколько функций, имеющих отношение к работе с таблицами в целом. int mysql list fields(string $dbname, string $tblname [,int $link]) Функция mysql list fields() возвращает информацию об указанной таблице $tblname в базе данных $dbname, используя идентификатор соединения $link, если он задан (в противном случае - последнее открытое соединение). Возвращаемое значение - идентификатор результата, который может быть проанализирован обычными средствами, либо при помощи функций mysql field flags() , mysql field len() , mysql field name() и mysql field type() . В случае ошибки возвращается -1, текст сообщения ошибки может быть получен обгчным способом. int mysql list tables(string $database [,int $link identifier]) Функция возвращает идентификатор результата (одна колонка), в котором содержатся имена всех таблиц, присутствующих в базе данных. Для извлечения этих имен можно использовать функцию mysql result() с номером колонки, равным 0. 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 |