in reply to inserting a column into mySQL DB with perl
Using SQLite to make for a "no setup" example script:
use strict; use warnings; use DBI; my $databaseName = 'Test.sqlite'; unlink $databaseName; my $dbh = DBI->connect ("dbi:SQLite:$databaseName"); die "connect failed: $DBI::errstr" if ! $dbh; local $dbh->{AutoCommit} = 0; # Use transacted processing local $dbh->{RaiseError} = 1; # die on processing errors local $dbh->{PrintError} = 0; # Suppress printing errors $dbh->do (<<SQL); CREATE TABLE Cars ( Car VARCHAR(128), CarId INTEGER PRIMARY KEY AUTOINCREMENT, SizeId INTEGER ); SQL $dbh->do (<<SQL); CREATE TABLE Sizes (Size VARCHAR(128), SizeId INTEGER PRIMARY KEY AUTOINCREMENT); SQL $dbh->commit (); my $sth = $dbh->prepare (<<SQL); INSERT INTO Cars (Car, SizeId) VALUES (?, ?) SQL $sth->execute (@$_) for [Mini => 3], [Civic => 3], [Camry => 2], [Acco +rd => 1]; $dbh->commit (); $sth = $dbh->prepare (<<SQL); INSERT INTO Sizes (Size) VALUES (?) SQL $sth->execute ($_) for 'sedan', 'compact', 'subcompact'; $dbh->commit (); $sth = $dbh->prepare (<<SQL); SELECT c.Car, s.Size FROM Cars c JOIN Sizes s ON c.SizeId = s.SizeId SQL $sth->execute (); while (my $row = $sth->fetchrow_hashref ()) { printf "%-10s %s\n", @{$row}{'Car', 'Size'}; }
Prints:
Mini subcompact Civic subcompact Camry compact Accord sedan
|
|---|