in reply to Trouble writing to SQLite from CGI on Windows
As Hippo suggested, here is a simple test cgi that both reads and writes to a database.
poj#!perl use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use DBI; my $q = CGI->new; my $fname = $q->param('fname'); my $lname = $q->param('lname'); my $email = $q->param('email'); my $action = $q->param('action'); my $dbh = getDbh('c:/temp/web/cgi_test1.db'); #createTable($dbh); # execute once if ($action eq 'Add'){ $dbh->do('INSERT INTO people (fname, lname, email) VALUES (?, ?, ?)' +, undef,$fname, $lname, $email); } elsif ($action eq 'Delete All'){ $dbh->do('DELETE FROM people'); } $dbh->commit(); my $table = join "\n", map { join " | ",@$_ } $dbh->selectall_array('SELECT * FROM people'); my $now = scalar localtime; print $q->header; print << "END_HTML"; <head><title>Test</title></head> <body> People <hr><pre>$table</pre><hr> <form action = "" method="post"> fname <input type="text" name="fname" value="Joe"><br/> lname <input type="text" name="lname" value="Smith"><br/> email <input type="text" name="email" value="joesmith\@somewhere.com" +><br/> <input type="submit" name="action" value="Add"> <input type="submit" name="action" value="Delete All"> </form> $now</body></html> END_HTML sub getDbh { my $dbfile = shift; my $dsn = "dbi:SQLite:dbname=$dbfile"; my $dbh = DBI->connect($dsn, '', '', { PrintError => 0, RaiseError => 1, AutoCommit => 0, FetchHashKeyName => 'NAME_lc', } ) or die $dbh::errstr; }; sub createTable { my $dbh = shift; my $sql = <<'END_SQL'; CREATE TABLE people ( id INTEGER PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), email VARCHAR(100) UNIQUE NOT NULL ); END_SQL $dbh->do($sql); $dbh->commit(); };
|
|---|