АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Синтаксис Mysql_list_fields

Читайте также:
  1. Выразительные средства синтаксиса
  2. Грамматика (синтаксис)
  3. Методика изучения раздела «Синтаксис».
  4. Наследование. Понятие наследования. Базовый и производные (порожденный) классы. Синтаксис определения производного класса. Подстановка конструкторов и методов базового класса.
  5. Перегрузка операций. Понятие перегрузки операторов. Синтаксис перегрузки операции. Перегрузка бинарных операций, операций сравнения.
  6. Расширенный синтаксис вызова функций
  7. Синтаксис
  8. Синтаксис
  9. Синтаксис
  10. Синтаксис
  11. Синтаксис

 

ресурс Mysql_list_fields (
строка database_name,
строка table_name
[, ресурс link_identifier])

 

Эта функция возвращает список полей в таблице table_name в базе данных database_name. Получается, что выбирать базу данных нам было необязательно, но это пригодится позже. Как можно заметить, результат работы этой функции – переменная типа ресурс. То есть это не совсем то, что мы хотели получить. Это ссылка, которую можно использовать для получения информации о полях таблицы, включая их названия, типы и флаги.

Функция Mysql_field_name возвращает имя поля, полученного в результате выполнения запроса. Функция Mysql_field_len возвращает длину поля. Функция Mysql_field_type возвращает тип поля, а функция Mysql_field_flags возвращает список флагов поля, записанных через пробел. Типы поля могут быть int, real, string, blob и т.д. Флаги могут быть not_null, primary_key, unique_key, blob,
auto_increment и т.д.

Синтаксис у всех этих команд одинаков:


строка Mysql_field_name (ресурс result, целое field_offset)
строка Mysql_field_type (ресурс result, целое field_offset)
строка Mysql_field_flags (ресурс result, целое field_offset)
строка Mysql_field_len (ресурс result, целое field_offset)

 

Здесь result – это идентификатор результата запроса (например, запроса, отправленного функциями Mysql_list_fields или Mysql_query (о ней будет рассказано позднее)), а field_offset – порядковый номер поля в результате.

Вообще говоря, то, что возвращают функции типа Mysql_list_fields или Mysql_query, представляет собой таблицу, а точнее, указатель на нее. Чтобы получить из этой таблицы конкретные значения, нужно задействовать специальные функции, которые построчно читают эту таблицу. К таким функциям и относятся Mysql_field_name и т.п. Чтобы перебрать все строки в таблице результата выполнения запроса, нужно знать число строк в этой таблице. Команда Mysql_num_rows(ресурс result) возвращает число строк во множестве результатов
result.

А теперь попробуем получить список полей таблицы Artifacts (коллекция экспонатов).


<?
$conn = Mysql_connect(
"localhost","nina","123")
or die("Невозможно установить
соединение: ". Mysql_error());
echo "Соединение установлено";
Mysql_select_db("book");
$list_f = Mysql_list_fields (
"book","Artifacts",$conn);
$n = Mysql_num_fields($list_f);
for($i=0;$i<$n; $i++){
$type = Mysql_field_type($list_f, $i);
$name_f = Mysql_field_name($list_f,$i);
$len = Mysql_field_len($list_f, $i);
$flags_str = Mysql_field_flags (
$list_f, $i);
echo "<br>Имя поля: ". $name_f;
echo "<br>Тип поля: ". $type;
echo "<br>Длина поля: ". $len;
echo "<br>Строка флагов поля: ".
$flags_str. "<hr>";
}
?>

 

В результате должно получиться примерно вот что (если в таблице всего два поля, конечно):

Имя поля: id
Тип поля: int
Длина поля: 11
Строка флагов поля:
not_null primary_key auto_increment
Имя поля: title
Тип поля: string
Длина поля: 255
Строка флагов поля:
Отображение списка полей в html-форму

Теперь немножко подкорректируем предыдущий пример. Будем не просто выводить информацию о поле, а отображать его в подходящий элемент html- формы. Так, элементы типа BLOB переведем в textarea (заметим, что поле description, которое мы создавали с типом TEXT, отображается как имеющее тип BLOB), числа и строки отобразим в текстовые строки ввода <input type=text>, а элемент, имеющий метку автоинкремента, вообще не будем отображать, поскольку его значение устанавливается автоматически.

Все это решается довольно просто, за исключением выделения из списка флагов флага auto_increment. Для этого нужно воспользоваться функцией explode.

Синтаксис explode:


массив explode(строка separator, строка string [, int limit])

 

Эта функция разбивает строку string на части с помощью разделителя separator и возвращает массив полученных строк.

В нашем случае в качестве разделителя нужно взять пробел “ ", а в качестве исходной строки для разбиения – строку флагов поля.

Итак, создадим форму для ввода данных в таблицу Artifacts:


<?
$conn=Mysql_connect("localhost","nina","123");
// устанавливаем соединение
$database = "book";
$table_name = "Artifacts";
Mysql_select_db($database); // выбираем базу данных для
// работы
$list_f = Mysql_list_fields($database,$table_name);
// получаем список полей в базе
$n = Mysql_num_fields($list_f); // число строк в результате
// предыдущего запроса (т.е. сколько всего
// полей в таблице Artifacts)
echo "<form method=post action=insert.php>";
// создаем форму для ввода данных
echo "&nbsp;<TABLE BORDER=0 CELLSPACING=0 width=50% ><tr>
<TD BGCOLOR='#005533' align=center><font color='#FFFFFF'>
<b> Add new row in
$table_name</b></font></td></tr><tr><td></td></tr></TABLE>";
echo "<table border=0 CELLSPACING=1 cellpadding=0 width=50% >";
// для каждого поля получаем его имя, тип, длину и флаги
for($i=0;$i<$n; $i++){
$type = Mysql_field_type($list_f, $i);
$name_f = Mysql_field_name ($list_f,$i);
$len = Mysql_field_len($list_f, $i);
$flags_str = Mysql_field_flags ($list_f, $i);
// из строки флагов делаем массив,
// где каждый элемент массива - флаг поля
$flags = explode(" ", $flags_str);
foreach ($flags as $f){
if ($f == 'auto_increment') $key = $name_f;
// запоминаем имя автоинкремента
}
/* для каждого поля, не являющегося автоинкрементом, в
зависимости от его типа выводим подходящий элемент формы */
if ($key <> $name_f){
echo "<tr><td align=right bgcolor='#C2E3B6'><font size=2>
<b>&nbsp;". $name_f."</b></font></td>";
switch ($type){
case "string":
$w = $len/5;
echo "<td><input type=text name=\"$name_f\"
size = $w ></td>";
break;
case "int":
$w = $len/4;
echo "<td><input type=text name=\"$name_f\"
size = $w ></td>";
break;
case "blob":
echo "<td><textarea rows=6 cols=60
name=\"$name_f\"></textarea></td>";
break;
}
}
echo "</tr>";
}
echo "</table>";
echo "<input type=submit name='add' value='Add'>";
echo "</form>";
?>

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)