Автор Тема: Wrapper DBI  (Прочитано 2228 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lamerz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Wrapper DBI
« : 25 Января 2007, 17:24:12 »
Правильно ли я сделал модуль?

Это мой первый, прошу не ругать:)



package Mydbi
;
use 
Exporter;
@
ISA qw(Exporter);
@
EXPORT qw(connect query execute select_row db_error);
use 
strict;

my ($dbh,$prefix_db);

$prefix_db="Префикс таб.";

sub connect
{
  if (!
$ENV{\'MOD_PERL\'}) { require DBI; }

  my $db_host = "host";
  my $db_name = "name";
  my $db_user = "user";
  my $db_pass
	
= "pass";

	
$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host",
           $db_user,$db_pass) or db_error($DBI::errstr);

  $dbh->do(\'SET NAMES "CP1251"\');

  if (!$ENV{\'MOD_PERL\'}) { $dbh->{\'Warn\'} = 0;}
 return $dbh;
}

sub query
{
  my ($sql, $attr, @params) = @_;
  $sql=~s/{prefix}/$prefix_db/;
	
$dbh->do($sql, $attr, @params) or db_error($DBI::errstr);
}

sub execute
{
  my $sql = shift;
  $sql=~s/{prefix}/$prefix_db/;
  my $sth = $dbh->prepare($sql) or db_error($DBI::errstr);
  $sth->execute or db_error($DBI::errstr);
 return $sth;
}

sub select_row
{
  my $sql = shift;
  $sql=~s/{prefix}/$prefix_db/;
  my $sth = $dbh->prepare($sql) or db_error($DBI::errstr);
  $sth->execute or db_error($DBI::errstr);
  my $result = $sth->fetchrow_hashref;
  $sth->finish;
 return $result;
}

sub db_error()
{
  my $dbi_err = shift;
  print "Content-type: text/html\\n\\n";
  print $dbi_err;
  die;
}

END { $dbh->disconnect() if defined($dbh) }

1;


 

Sitemap 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