Rob Roudebush wrote at Tue, 11 Jun 2002 03:07:44 +0200:
> I have the following code - when someone enters a whatever ' whatever into one of >my forms my > script dies because of the single quote. Arrrrggg... of course the first time I >come across it is > when my boss is testing out the script. Your script would be better to read with a here document and the typical style for SQL statements (keys words uppercase): > $sth = $dbh->do( "insert into maintenance (owner, email, maintype, title, >requested, engineer, > ticket, impact, comm, > dispo, dispodate, action, sponname, sponop, sponcp, sponp, conname, conop, concp, >conp, partname, > partop, partcp, partp, manname, manop, mancp, manp, dbaname, dbaop, dbacp, dbap, >engname, engop, > engcp, engp, mainname, mainop, maincp, mainp, process, rollback, closeout, datetime, >purpose, > risk, saname, saop, sacp, sap, total, pending, counting) values ('$owner', '@names', >'$maintype', ^^^^^^ You're sure that the email is an array of names ? > '$title', '$requested', '$engineer', '$ticket', '$impact', '$comm', '$dispo', '$d >ispodate', > '$action', '$sponname', '$sponop', '$sponcp', '$sponp', '$conname', '$conop', >'$concp', '$conp', > '$partnam e', '$partop', '$partcp', '$partp', '$manname', '$manop', '$mancp', >'$manp', '$dbaname', > '$dbaop', '$dbacp', '$dbap', > '$engname', '$engop', '$engcp', '$engp', '$mainname', '$mainop', '$maincp', >'$mainp', '$process', > '$rollback', '$clo > seout', '$datetime', '$purpose', '$risk', '$saname', '$saop', '$sacp', '$sap', >'$total', > '$pending', '$counting')"); > And here's a little more beautiful form. my @fields = qw( owner, email, maintype, title, requested, engineer, ticket, impact, comm, dispo, dispodate, action, sponname, sponop, sponcp, sponp, conname, conop, concp, conp, partname, partop, partcp, partp, manname, manop, mancp, manp, dbaname, dbaop, dbacp, dbap, engname, engop, engcp, engp, mainname, mainop, maincp, mainp, process, rollback, closeout, datetime, purpose, risk, saname, saop, sacp, sap, total, pending, counting) ); my @values = join "," => map {"'$_'"} ( $owner, "@names", $maintype, $title, $requested, $engineer, $ticket, $impact, $comm, $dispo, $dispodate, $action, $sponname, $sponop, $sponcp, $sponp, $conname, $conop, $concp, $conp, $partname, $partop, $partcp, $partp, $manname, $manop, $mancp, $manp, $dbaname, $dbaop, $dbacp, $dbap, $engname, $engop, $engcp, $engp, $mainname, $mainop, $maincp, $mainp, $process, $rollback, $closeout, $datetime, $purpose, $risk, $saname, $saop, $sacp, $sap, $total, $pending, $counting ); $sth = $dbh->do "INSERT INTO Maintenance @fields VALUES (@values)"; Without the strange behaviour of email => @names you also would have written: no strict 'refs'; my @values = join "," => map {"'${$_}'"} @fields; use strict 'refs'; If any of your data contains a ' so you should quote it: my @values = join "," => map {"'$_'"} map { $dbh->quote } @fields; Best Wishes, Janek -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]