Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
32.2. Функции получения доступаВ любом из языков программирования существует функции, позволяющие получать, вносить, редактировать те или иные значения или параметры. Для более легкого и систематического изучения функций работы с MySQL они разделены по их принципиальному назначению. В этом параграфе рассмотрены функции, позволяющие получать доступ к базе данных:
• mysql_affected_rows(), • mysql_db_name(), • mysql_fetch_field(), • mysql_fetch_row(), • mysql_field_flags(), • mysql_field_name(), • mysql_field_table(), • mysql_field_type(), • mysql_num_fields(), • mysql_tablename(). Функция mysql_affected_rows() позволяет получить число строк, на которые воздействует последний UPDATE, DELETE или INSERT, т. е. число строк, активных в предыдущей операции MySQL. Функция mysql_affected_rows() имеет следующий синтаксис: int mysql_affected_rows([int link_identifier]) Функция возвращает нуль, больше нуля или минус один. Если идентификатор связи link_identifier не определен, функция примет по умолчанию последнюю связь, открытую функцией mysql_connect() (с принципами работы этой функции вы ознакомитесь далее). Функция mysql_affected_rows() показывает число измененных строк, если возвращаемое значение больше нуля. Если возращается нуль, то никакие записи не соответствовали значениям полей WHERE в UPDATE или DELETE. Когда сам запрос возвратит ошибку, то значение целого число будет равно минус единице. Ошибкой считается, например, попытка добавить двойной первичный ключ в течение одного INSERT. ВНИМАНИЕ При использовании UPDATE MySQL не будет модифицировать столбцы, в которых новое значение подобно старому. Данное явление позволяет увидеть, что mysql_affected_rows() не может фактически равняться числу согласованных строк, а только количеству строк, на которые непосредственно воздействовал запрос. Mysql_affected_rows() не работает с инструкциями SELECT, а только с инструкциями, которые модифицируют записи. Чтобы получить количество строк, возвращенных инструкцией SELECT, используют функцию mysql_num_rows() [int link_identifier]. Пример 32.1. Получение доступа. Файл test.php <?php $mydate = mysql_connect("localhost", "username", "password"); mysql_select_db("database", $mydate); $intres = mysql_query("SELECT * FROM table1", $mydate); $introw = mysql_affected_rows($mydate); $num_rows = mysql_num_rows($intres); echo "$num_rows Rowsn"; echo "$introw n"; ?> Опишем принцип работы данного примера. Функция mysql_connect() позволяет установить соединение с сервером MySQL. На данном этапе не стоит сильно обращать внимание на параметры, указанные в данной функции. После соединения с сервером MySQL необходимо соединиться с базой данных, указанной в переменной $mydate, на сервере, указанном под именем database. Для реализации этой задачи используется функция mysql_select_db(). Далее выполняется SQL-запрос, заданный в качестве переменной $nrydate к базе данных, указанной как SELECT * FRCM table1. Эта операция осуществляется при помощи функции mysql_query(). Функция mysql_affected_rows() используется В PHP 3 и PHP 4. Чтобы получить результат, необходимо воспользоваться функцией mysql_db_name(). Ее синтаксис: int mysql_db_name(int result, int row[, mixed field]) Mysql_db_name() возвращает целое число. В качестве параметра result применяется результирующий указатель из вызова функции mysql_list_dbs(). Параметр row является введением в набор результатов. В случае возникновения ошибки возвращается false. Чтобы определить ее характер, используют функции mysql_errno() и mysql_error(). Пример 32.2. Получение доступа. Файл index.php <?php mysql_connect('localhost', 'username', 'password'); $list = mysql_list_dbs() ; $i = 0; $cnt = mysql_num_rows($list); while ($i < $cnt) { echo mysql_db_name($list, $i) . "n"; $i++; } ?> Функция mysql_db_name() применяется в PHP 3-3.0.6 и PHP 4. Чтобы получить столбец информации результата и возвратить его в качестве объекта, используют функцию mysql_fetch_field(). Она позволяет возвратить объект, содержащий поле информации (табл. 32.1). Ее синтаксис: object mysql_fetch_field(int result [, int field_offset] ) Таблица 32.1. Свойства объекта, возвращаемые функцией mysql_fetch_field()
Функция mysql_fetch_row() возвращает массив, который соответствует определенной строке или false, если больше нет строк. Синтаксис функции: array mysql_fetch_row(int result) mysql_fetch_row() выбирает одну строку данных, связанную с указанным идентификатором result. Строка возвращается как массив. Каждый столбец сохраняется в матричном смещении, начинающемся в смещении 0. Последующий запрос к функции возвратит следующую строку в наборе результатов или false, если больше строк не существует. Рассмотрим пример: <?php mysql_connect($host, $user, $password) or die ("Could not connect"); $result = mysql_db_query("database", "select * from table") or die ("Query failed"); // получаем данные столбца $i = 0; while ($i < mysql_num_fields($result) ) { echo "Information for column $i:<br>n"; $meta = mysql_fetch_field($result); if(!$meta) { echo "No information available<br>n"; } echo "<pre> blob: $meta->blob max_length : $meta->max_length multiple_key : $meta->multiple_key name : $meta->name not_null: $meta->not_null numeric: $meta->numeric primary_key: $meta->primary_key table: $meta->table type; $meta->type unique_key : $meta->unique_key unsigned: $meta->unsigned zerofill: $meta->zerofill </pre>"; $i++; } mysql_free_result($result); ?> Функции mysql_fetch_field() и mysql_fetch_row() работают в PHP 3 и PHP 4. Функции mysql_field_flags(), mysql_field_name(), mysql_field_table(), mysql_field__type() позволяют осуществлять разнообразные манипуляции с флагами. Функция mysql_field_flags() возвращает флаги указанного поля. Ее синтаксис: string mysql_field_f lags (int result, int field_offset) Соответствующий флаг будет возвращен в качестве строки. Флаги, возвращаемые функцией mysql_field_flags(), могут быть следующие: not_null, primary_key, unique_key, multiple_key, blob, unsigned, zerofill, binary, enum, auto_increment, timestamp. Чтобы получить название указанного поля, необходимо воспользоваться функцией mysql_field_name(). Функция имеет такой же синтаксис, как и mysql_field_flags(). ВНИМАНИЕ Параметр field_offset начинается с нуля. Рассмотрим пример: // таблица пользователя состоит из трех областей: // lockalhost // lockalhost1 // lockalhost2 $res = mysql_db_query("users", "select * from users", Slink); echo mysql_field_name($res, 0) . "n"; echo mysql_field_name($res, 2); В результате работы данного примера получим следующий результат: lockalhost lockalhost2 Функция mysql_field_table() позволяет получить имя таблицы. Функция имеет схожий синтаксис с ранее описанными функциями и также возвращает строку. Для определения типа поля используют функцию mysql_fields_type(). Тип поля может быть следующим: int, real, string, blob и др. Рассмотрим пример: <?php mysql_connect("localhost:3306"); mysql_select_db("Wisconsin"); $result = mysql_query("SELECT * FROM onek"); $fields = mysql_num_fields($result); $rows = mysql_num_rows($result); $i = 0; $table = mysql_field_table($result, $i); echo "Your '".$table."' table has ".$fields." fields and ".$rows. " records<br>"; echo "The table has the following fields <br>"; while ($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>"; $i++; } mysql_close(); ?> Рассмотренные функции работают в PHP 3 и PHP 4. Чтобы получить в качестве результата количество полей, используют функцию mysql_num_fields(). Ее синтаксис: int mysql_num_fields (int result) Функция возвращает целое число. Функция mysql_tablename() позволяет получить имя поля таблицы. Функция имеет следующий синтаксис: string mysql_tablename (int result, int i) Функция использует указатель result, возвращенный функцией как целочисленный индекс и выводит название таблицы. Функция () может быть использована, чтобы определить число таблиц в поле, указанном параметром result. Например: <?php mysql_connect ("localhost:3306"); $result = mysql_list_tables ("Wisconsin"); $i = 0; while ($i < mysql_num_rows ($result) ) { $tb_names[$i] = mysql_tablename ($result, $i); echo $tb_names[$i]. "<br>"; $i++; } ?> Функции mysql_num_fields() и mysql_tablename() используются в PHP 3 и PHP 4.
|
1 |
Оглавление
|