Скрипт tabledump.pl выводит сведения об указанной таблице

#!/usr/bin/perl -w

use strict;

use CGI qw(:standard);

use CGI::Carp;

# Использовать модуль DBI

use DBI;

CGI::use_named_parameters(1);

my ($db,$table);

my $output = new CGI;

$server = param('server') or $server = '';

$db = param('db') or die("He указана база данных !");

# Соединиться с указанным сервером.

my $dbh = DBI->connect("DBI:mysql:$db:$server", undef, undef);

# Готовим запрос к серверу, требующий все данные таблицы.

my $table_data = $dbh->prepare("select * from $table");

# Посылаем запрос серверу.

$table_data->execute;

# Если возвращаемое значение не определено, таблица не существует # или пуста; мы не проверяем, что из двух верно,

if (not $table_data) {

print header, start_html('title'=>

"Данные no $host => $db => $table", 'BGCOLOR'=>'white');

print <<END_OF_HTML;

<H1>$host</h1><H2>$db</h2>

Таблицы'$table' нет в $db на $host.

</body></html>

END_OF_HTML

exit(0); }

# Теперь мы знаем, что есть данные для выдачи. Сначала выведем

# структуру таблицы.

print header, start_html('title'=>"Данные по $host => $db =>

$table",'BGCOLOR'=>'white');

print <<END_OF_HTML; <H1>$host</h1> <H2>$db</h2>

<H3>$table</h3><p><TABLE BORDER> <CAPTION>Поля</caption> <TR>

<TH>Поле<TH>Тип<TH>Pa3Mep<TH>NOT NULL </tr> <UL>

END_OF_HTML

# $table_data->name возвращает ссылку

# на массив полей таблицы.

my @fields = @{$table_data->NAME};

# $table_data->type возвращает ссылку на массив типов полей.

# Возвращаемые типы имеют стандартные обозначения SQL,

# а не специфические для MySQL.

my @types = @{$table_data->TYPE};

# $table_data->is_not_null возвращает ссылку на массив типа Boolean,

# указывающий, в каких полях установлен флаг 'NOT NULL'.

my @not_null = @{$table_data->is_not_null};

# $table_data->length возвращает ссылку на массив длин полей. Они

фиксированные для типов INT и REAL, но переменные (

# заданные при создании таблицы) для CHAR.

my @length = @{$table_data->length};

# Все перечисленные выше массивы возвращаются в одном и том же

# порядке, поэтому $fields[0],$types[0], $not_null[0] and

# $length[0] относятся к одному полю.

foreach $field (0. .$#fields) {

print "<TR>\n"; print "<TD>$fields[$field]<TD>$types[$field]<TD>";

print $length[$field] if $types[$field] eq 'SQL_CHAR';

print "<TD>";

print 'Y' if ($not_null[$field]);

print "</tr>\n"; }

print <<END_OF_HTML; </table>

<P><B>Data</b><br><OL>

END_OF_HTML

#построчно перемещаемся по данным: DBI::fetchrow_array().

# Мы сохраним данные в массиве в таком же порядке, как и в

# массивах (@fields, @types, etc.), которые мы создали раньше.

while(my((@data)=$table_data->fetchrow_array) {

print "<LI>\n<UL>";

for (0..$#data) {

print "<LI>$fields[$_] => $data[$_]</li>\n";

}

print "</ul></li>"; }

print <<END_OF_HTML;

</ol>

</body></html>

END_OF_HTML








Дата добавления: 2015-11-04; просмотров: 644;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.