General workflow
A general DBI workflow might look like this:
- Connect to database
- Prepare query
- Execute query
- Fetch data
- Disconnect from database
Let's try to select all the users from database and print their first and last names.
my $dbh = DBI->connect('dbi:SQLite:database.db', undef, undef, {RaiseError => 1}); my $sth = $dbh->prepare('SELECT firstname, lastname FROM users'); $sth->execute; while (my @row = $sth->fetchrow_array) { my ($firstname, $lastname) = @row; say "$firstname $lastname"; }
Besides fetchrow_array
there is also fetchrow_arrayref
which returns a reference instead of an array.
Sometimes you might want to fetch all the data at once instead of getting row by row, you can use fetchall_arrayref
method for that:
my $dbh = DBI->connect('dbi:SQLite:database.db', undef, undef, {RaiseError => 1}); my $sth = $dbh->prepare('SELECT firstname, lastname FROM users'); $sth->execute; my $rows = $sth->fetchall_arrayref; foreach my $row (@$rows) { my ($firstname, $lastname) = @$row; say "$firstname $lastname"; }