J
Jon
Hiya,
I'm working on adding table prefixes for an application, so that it can be
used with the same database but different sets of data. I thought the best
idea would be to store the prefix as part of the DBI object (eg:
$dbh->{'_prefix'} = $prefix, however this isn't working.
Here is some code demonstrating the problem.
penguin@restless:~/scripts$ cat sqltest.pl
#!/usr/bin/perl
use lib './lib';
use Data:umper;
use sql;
use strict;
use warnings;
my $sql = new sql(
'database' => 'test',
'username' => 'username',
'password' => 'password',
'dbprefix' => 'anything',
);
print Dumper($sql);
penguin@restless:~/scripts$ cat lib/sql.pm
package sql;
use DBI;
use strict;
use warnings;
@sql::ISA = qw/DBI::db/;
sub new($%) {
my $class = shift;
my %opts = @_;
# Make sure we have all required arguments
foreach (qw/username database dbprefix/) {
die("No $_ supplied") unless $opts{$_};
}
# Create a database handle
my $dbh = DBI->connect("DBI:mysql:$opts{database}", $opts{username},
$opts{password});
|| die("Connection to database failed: ".$DBI::errstr);
# Record our table prefix in our DBI object
$dbh->{'_prefix'} = $opts{'dbprefix'};
return bless $dbh, $class;
}
1;
penguin@restless:~/scripts$ ./sqltest.pl
$VAR1 = bless( {}, 'sql' );
penguin@restless:~/scripts$
Thanks,
I'm working on adding table prefixes for an application, so that it can be
used with the same database but different sets of data. I thought the best
idea would be to store the prefix as part of the DBI object (eg:
$dbh->{'_prefix'} = $prefix, however this isn't working.
Here is some code demonstrating the problem.
penguin@restless:~/scripts$ cat sqltest.pl
#!/usr/bin/perl
use lib './lib';
use Data:umper;
use sql;
use strict;
use warnings;
my $sql = new sql(
'database' => 'test',
'username' => 'username',
'password' => 'password',
'dbprefix' => 'anything',
);
print Dumper($sql);
penguin@restless:~/scripts$ cat lib/sql.pm
package sql;
use DBI;
use strict;
use warnings;
@sql::ISA = qw/DBI::db/;
sub new($%) {
my $class = shift;
my %opts = @_;
# Make sure we have all required arguments
foreach (qw/username database dbprefix/) {
die("No $_ supplied") unless $opts{$_};
}
# Create a database handle
my $dbh = DBI->connect("DBI:mysql:$opts{database}", $opts{username},
$opts{password});
|| die("Connection to database failed: ".$DBI::errstr);
# Record our table prefix in our DBI object
$dbh->{'_prefix'} = $opts{'dbprefix'};
return bless $dbh, $class;
}
1;
penguin@restless:~/scripts$ ./sqltest.pl
$VAR1 = bless( {}, 'sql' );
penguin@restless:~/scripts$
Thanks,