I am new to mysql and a novice at perl. My program works except for the write to the database. when I enter data in the form it does put it in the text file. The database select does read back the two records I manually inserted. But I am not able to find out why my insert does not work. I check the field names in the form and they corespond to the fields in the database. Error message are:
CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Scalar found where operator expected at C:\Inetpub\wwwroot\cgi-bin\memberv2.cgi line 30, near ""INSERT INTO members VALUES("$membername" (Missing operator before $membername?) String found where operator expected at C:\Inetpub\wwwroot\cgi-bin\memberv2.cgi line 30, near "$membername","" (Missing operator before ","?) Scalar found where operator expected at C:\Inetpub\wwwroot\cgi-bin\memberv2.cgi line 30, near "","$address" (Missing operator before $address?) String found where operator expected at C:\Inetpub\wwwroot\cgi-bin\memberv2.cgi line 30, near "$address","" (Missing operator before ","?) Scalar found where operator expected at C:\Inetpub\wwwroot\cgi-bin\memberv2.cgi line 30, near "","$city" (Missing operator before $city?) String found where operator expected at C:\Inetpub\wwwroot\c Below is the code: #!c:\perl\bin\perl use DBI(); print "Content-type:text/html\n\n"; #Parse the form data read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $value =~ s/\n/ /g; $value =~ s/\r/ /g; $value =~ s/\cM/ /g; $name =~ tr/+/ /; $name =~ tr/_/ /; $FORM{$name} = $value; } $blank= " "; #Connect to database members. $database = "members"; $table = "members"; $dbh = DBI->connect("DBI:mysql:$database")or dienice("Can't connect:$DBI::errstr"); $dbh->do("INSERT INTO members VALUES("$membername","$address","$city","$state","$zipcode","$phonenumber")" ); # Save the data to a file open(OUTF, ">>member.txt") or dienice("Couldn't open visitation.txt for writing: $!"); #Lock the file #flock(OUTF, 2); #Reset pointer seek(OUTF,0,2); # Print form data foreach $key (keys(%FORM)) { print OUTF "$key = $FORM{$key}\n"; } print OUTF "$blank\n"; close(OUTF); #Acknowledge receiving form print <<EndHTML; <html><head><title>Member Information</title></head> <body> <h2>Thank You</h2> Thank you for adding information about a member. Your information was entered into the database and a txt file.<p> </body></html> EndHTML #Connect to database members retrieve information. $database = "members"; $table = "members"; $dbh = DBI->connect("DBI:mysql:$database")or dienice("Can't connect:$DBI::errstr"); $sth = $dbh->prepare("select membername,address,city,state,zipcode,phonenumber from members")or dienice("Can't prepare statement:",$dbh->errstr); $rv = $sth->execute(); while (($membername,$address,$city,$state,$zipcode,$phonenumber) = $sth->fetchrow_array){ print "$membername - $address - $city - $state - $zipcode - $phonenumber<p>\n"; } $sth->finish(); # Disconnect the Database $dbh->disconnect(); #The dienice subroutine, for handling errors. sub dienice { my($errmsg) = @_; print "<h2>Error</h2>\n"; print "$errmsg<p>\n"; print "</body></html>\n"; exit; } exit; Russ Fineman -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]