perldoc > CGI::Session::Driver::DBI

πŸ“› NAME

CGI::Session::Driver::DBI – Base class for native DBI-related CGI::Session drivers

πŸš€ Quick Reference

Use CaseCommandDescription
🧩 Create session with SQLite driver $s = CGI::Session->new('driver:sqlite', undef, {TableName => 'my_sessions'}); Uses default or custom table name
🧩 Create session with MySQL driver $s = CGI::Session->new('driver:mysql', undef, {TableName => 'my_sessions', DataSource => 'dbi:mysql:shopping_cart'}); Specifies DataSource and TableName
🧩 Use existing database handle $s = CGI::Session->new('driver:pg', undef, {Handle => $dbh}); Reuses an existing DBI connection
🧩 Custom column names $s = CGI::Session->new('driver:pg', undef, {TableName => 'session', IdColName => 'my_id', DataColName => 'my_data', DataSource => 'dbi:pg:dbname=project'}); Adjusts table column names

πŸ“– SYNOPSIS

require CGI::Session::Driver::DBI;
@ISA = qw( CGI::Session::Driver::DBI );

πŸ“ DESCRIPTION

In most cases you can create a new DBI-driven CGI::Session driver by simply creating an empty driver file that inherits from CGI::Session::Driver::DBI. That's exactly what sqlite does. The only reason why this class doesn't suit for a valid driver is its name isn't in lowercase. I'm serious!

πŸ“Œ NOTES

CGI::Session::Driver::DBI defines init() method, which makes DBI handle available for drivers in Handle object attribute regardless of what %dsn_args were used in creating session object. Should your driver require non‑standard initialization you have to re‑define init() method in your .pm file, but make sure to set Handle object attribute to database handle (returned by DBI->connect(...)) if you wish to inherit any of the methods from CGI::Session::Driver::DBI.

πŸ’Ύ STORAGE

Before you can use any DBI‑based session drivers you need to make sure compatible database table is created for CGI::Session to work with. Following command will produce minimal requirements in most SQL databases:

CREATE TABLE sessions (
    id CHAR(32) NOT NULL PRIMARY KEY,
    a_session TEXT NOT NULL
);

Your session table can define additional columns, but the above two are required. Name of the session table is expected to be sessions by default. You may use a different name if you wish. To do this you have to pass TableName as part of your %dsn_args:

$s = CGI::Session->new('driver:sqlite', undef, {TableName => 'my_sessions'});
$s = CGI::Session->new('driver:mysql', undef,
{
    TableName => 'my_sessions',
    DataSource => 'dbi:mysql:shopping_cart'.
});

To use different column names, change the CREATE TABLE statement, and then simply do this:

$s = CGI::Session->new('driver:pg', undef,
{
    TableName => 'session',
    IdColName => 'my_id',
    DataColName => 'my_data',
    DataSource => 'dbi:pg:dbname=project',
});

or

$s = CGI::Session->new('driver:pg', undef,
{
    TableName => 'session',
    IdColName => 'my_id',
    DataColName => 'my_data',
    Handle => $dbh,
});

βš™οΈ DRIVER ARGUMENTS

Following driver arguments are supported:

πŸ“„ LICENSING

For support and licensing information see CGI::Session.

CGI::Session::Driver::DBI
πŸ“› NAME πŸš€ Quick Reference πŸ“– SYNOPSIS πŸ“ DESCRIPTION
πŸ“Œ NOTES
πŸ’Ύ STORAGE βš™οΈ DRIVER ARGUMENTS πŸ“„ LICENSING

Generated by phpman v4.9.26-1-g511901d · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-08 12:29 @216.73.216.150
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format

^_top_^