man > CGI::Session::Driver::DBI

๐Ÿงพ NAME

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

๐Ÿš€ Quick Reference

Use CaseCommandDescription
๐Ÿ”ง Create a new DBI-based session driverrequire CGI::Session::Driver::DBI; @ISA = qw( CGI::Session::Driver::DBI );Minimal driver definition โ€“ inherits all methods from the base class
๐Ÿ—„๏ธ Set custom table name$s = CGI::Session->new('driver:sqlite', undef, {TableName=>'my_sessions'});Override default "sessions" table name
๐Ÿ”— Use existing database handle$s = CGI::Session->new('driver:pg', undef, {Handle=>$dbh});Pass an already connected DBI handle
๐Ÿ“‹ Custom column names$s = CGI::Session->new('driver:pg', undef, {TableName=>'session', IdColName=>'my_id', DataColName=>'my_data', DataSource=>'dbi:pg:dbname=project'});Rename id and data columns

๐Ÿ“‹ 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.10.0-7-g98e9fd5 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-09-07 05:13 @2600:1f28:365:80b0:ed19:4cb6:6073:b302
CrawledBy CCBot/2.0 (https://commoncrawl.org/faq/)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^