Введение в СУБД MySQL


DBI - часть 3


#!/usr/bin/perl -w use strict; use CGI qw( standard); use CGI::Carp; # Использовать модуль DBI use DBI; CGI::use_named_parameters(1); my ($server, $sock, $host); my $output = new CGI; $server = param('server') or Sserver = ''; # Подготовить DBD-драйвер для MySQL my $driver = DBI->install_driver('mysql'); my @databases = $driver->func($server, '_ListDBs'); # Если параметр @databases неопределен, предполагаем, # что на этом узле не запущен # сервер MySQL. Однако это может быть вызвано # другими причинами. Полный текст сообщения об ошибке # можно получить, проверив $DBI::errmsg. if (not @databases) { print header, start_html('title'=>"Данные no Sserver", 'BGCOLOR'=>'white'); print<<END_OF_HTML; <H1>$server</h1> Ha Sserver , по-видимому, не запущен сервер mSQL. </body></html> END_OF_HTML exit(0); } print header, start_html('title'=>" Данные по $host", 'BGCOLOR'=>'white'); print <<END_OF_HTML; <H1>$host</h1> <P> Соединение с $host на сокете $sock. <p> Базы данных:<br> <UL> END_OF_HTML foreach(@databases) { print "<LI>$_\n"; } print <<END_OF_HTML; </ul> </body></html> HTML exit(0)

Листинг 13.1.

В примере 2 tableshow.cgi принимает в качестве параметров имя сервера базы данных (по умолчанию "localhost") и имя базы данных на этом сервере. Затем программа показывает все таблицы, имеющиеся в этой базе данных.

Пример 2. Программа CGI tableshow.cgi выводит список всех таблиц в базе данных

#!/usr/bin/perl -w use strict; use CGI qw(:standard); use CGI::Carp; # Использовать модуль Msql.pm use DBI; CGI::use_named_parameters(1); my ($db); my $output = new CGI; $db = param('db')'or die("He указана база данных!"); # Connect to the requested server. my $dbh = DBI->connect("DBI:mysql:$db;$server", undef, undef); # Если не существует $dbh, значит, попытка соединения с сервером # базы данных не удалась. Возможно, сервер не запущен, # или не существует указанной базы данных, if (not $dbh) { print header, start_html('title'=>"Данные по $host => $db", 'BGCOLOR'=>'white'); print <<END_OF_HTML; <H1>$host</h1> <H2>$db</h2> Попытка соединения не удалась по следующей причине:<BR> $DBI::errstr </body></html> END_OF_HTML exit(0); } print header, start_html('title'=>"Данные по $host => $db", 'BGCOLOR'=>'white'); print <<END_OF_HTML; <H1>$host</h1> <H2>$db</h2> <р> Таблицы:<br> <UL> END_OF_HTML # $dbh->listtable возвращает массив таблиц, # имеющихся в текущей базе данных. my ©tables = $dbh->func( '_ListTables' ); foreach (@tables) { print "<LI>$_\n"; } print <<END_OF_HTML; </ul> </body></html> END_OF_HTML exit(0);




Начало  Назад  Вперед