my $sth = $dbh->prepare("SELECT `Test-Column-1`, `Test-Column-2` FROM `"
.$config{'MySQL.table'}."` WHERE 1");
if (!$sth->execute()) {
die "Error: ". $sth->errstr ."\n";
}
my ($column_1, $column_2);
# Bind Perl variables to columns:
$sth->bind_columns(\$column_1, \$column_2);
my %row;
# Column binding is the most efficient way to fetch data
while ($sth->fetch) {
$row{$column_1} = $column_2;
}
print Dumper \%row;
__END__
$VAR1 = {
'value-1 Column1' => 'value-1 Column2',
'value-2 Column1' => 'value-2 Column2',
'value-3 Column1' => 'value-3 Column2'
};
####
#!/usr/bin/perl
use DBI;
use strict;
use warnings;
use Data::Dumper;
use Config::Simple;
my %config = ();
my $path = 'conf.ini';
sub mysql {
Config::Simple->import_from("".$path."", \%config)
or die Config::Simple->error();
my $dbh = DBI->connect("dbi:mysql::".$config{'MySQL.host'}.":".$config{'MySQL.port'}."",
"".$config{'MySQL.user'}."",
"".$config{'MySQL.pass'}."",
{ 'PrintError' => 1, 'RaiseError' => 1 , 'AutoInactiveDestroy' => 1 }
) or die "Could not connect to ". $config{'MySQL.host'} .": ". $DBI::errstr ."\n";
my $databases = $dbh->do("SHOW DATABASES LIKE '".$config{'MySQL.db'}."'")
or die "Error: " .dbh->errstr. "\n";
if ($databases eq 1) {
printf "Database: ". $config{'MySQL.db'} ." exists not creating: ". $config{'MySQL.db'} ."\n";
}
else {
printf "Database: ". $config{'MySQL.db'} ." does not exist creating: ". $config{'MySQL.db'} ."\n";
my $checkExist = $dbh->do("CREATE DATABASE IF NOT EXISTS `".$config{'MySQL.db'}."`")
or die "Could not create the: ".$config{'MySQL.db'}." error: ". $dbh->errstr ."\n";
} # End of else
$dbh->do("USE ".$config{'MySQL.db'}."")
or die "Error: " .dbh->errstr. "\n";
my $tables = $dbh->do("SHOW TABLES FROM `".$config{'MySQL.db'}."`
WHERE Tables_in_".$config{'MySQL.db'}." LIKE
'".$config{'MySQL.table'}."'")
or die "Error: ".dbh->errstr. "\n";
if ($tables eq 1) {
printf "Table: ".$config{'MySQL.table'}." exists not creating: ".$config{'MySQL.table'}."\n";
}
else {
printf "Table: ".$config{'MySQL.table'}." does not exist creating: ".$config{'MySQL.table'}."\n";
my $prepareTable = $dbh->prepare("CREATE TABLE ".$config{'MySQL.table'}." (
`ID` INT NOT NULL AUTO_INCREMENT,
`Test-Column-1` VARCHAR(25) CHARACTER SET utf8 NOT NULL UNIQUE,
`Test-Column-2` VARCHAR(25) CHARACTER SET utf8 NOT NULL UNIQUE,
PRIMARY KEY(`ID`)
);");
if (!$prepareTable->execute()) {
die "Error: ". $prepareTable->errstr ."\n";
}
} # End of else
my $checkExistInsert = $dbh->prepare("INSERT IGNORE INTO `".$config{'MySQL.table'}.
"` (`Test-Column-1`, `Test-Column-2`) VALUES
('value-1 Column1','value-1 Column2'),('value-2 Column1','value-2 Column2'), ('value-3 Column1','value-3 Column2')");
if (!$checkExistInsert->execute()) {
die "Error: ". $checkExistInsert->errstr ."\n";
}
my $sth = $dbh->prepare("SELECT `Test-Column-1`, `Test-Column-2` FROM `"
.$config{'MySQL.table'}."` WHERE 1");
if (!$sth->execute()) {
die "Error: ". $sth->errstr ."\n";
}
my ($column_1, $column_2);
# Bind Perl variables to columns:
$sth->bind_columns(\$column_1, \$column_2);
my %row;
# Column binding is the most efficient way to fetch data
while ($sth->fetch) {
$row{$column_1} = $column_2;
}
$dbh->disconnect()
or warn "Error disconnecting: $DBI::errstr\n";
return \%row;
} # End of mysql sub
my $output_ref = mysql();
print Dumper $output_ref;
__END__
$ perl test.pl
Database: PerlMonks exists not creating: PerlMonks
Table: Data exists not creating: Data
$VAR1 = {
'value-1 Column1' => 'value-1 Column2',
'value-2 Column1' => 'value-2 Column2',
'value-3 Column1' => 'value-3 Column2'
};
####
my %row;
# Column binding is the most efficient way to fetch data
while ($sth->fetch) {
$row{$config{'MySQL.table'}}{$column_1} = $column_2;
}
$ perl test.pl
Database: PerlMonks exists not creating: PerlMonks
Table: Data exists not creating: Data
$VAR1 = {
'Data' => {
'value-1 Column1' => 'value-1 Column2',
'value-3 Column1' => 'value-3 Column2',
'value-2 Column1' => 'value-2 Column2'
}
};
####
[MySQL]
user=user
pass=password
host=localhost
port=3306
db=PerlMonks
table=Data