> OK I see what you're doing.  What I would need to do is just 
> tweak that a little.  I would need something like:
> 
> foearch ($cgi->param() ) {

foreach $p(@params) {
        if(param($p) ...) {
                $dbh->(param($p));

To do param() instead of $cgi->param() you may need to do
use CGI qw/:standard/;

Not sure if 
if($cgi->param($p) ...) would work or not, it may though.

DMuey

>       if ( <some test on the type here> ) {
>               $dbh->quote($_);
>       }
>       $sql .= "$_,";
>       $val .= "?,";
>       push(@{$array_ref}, $cgi->param($_));
> }
> 
> Does that make any sense?
> 
> On Mon, 2003-03-10 at 12:45, Ian Harisay wrote:
> > Here, I'll try and be more helpful than berating.  I'm 
> sorry I'm having 
> > a bad day.   The code below is not totally complete.  Some error 
> > handling needs to be added for sure.  I would consider this to be 
> > psuedo
> > code simply because I did not check my work for syntax.  I think it 
> > fairly accruate though.
> > 
> > ## this assumes you want to insert all form elements
> > my $cgi = CGI->new();
> > my $dbh = DBI->connect(<connect info goes here>);
> > 
> > my $sql = "INSERT INTO table (";
> > my $val = "values(";
> > my $array_ref = [];
> > 
> > ## build your statement assuming the form element names are ## the 
> > same as your column names. foreach ( $cgi->param() ){
> >   $sql .= "$_,";
> >   $val .= "?,";
> >   push(@{$array_ref}, $cgi->param($_));
> > }
> > $sql =~ s/,$/) /;  ## strip the last comma and add a closing paren.
> > $val =~ s/,$/)/;
> > 
> > my $sth = $dbh->prepare($sql.$val);
> > my $result = $sth->execute($array_ref);
> > 
> > $dbh->commit(); ## if autocommit is not on.
> > Ian Harisay wrote:
> > 
> > > Are you not listening to these people giving you helpful advice?  
> > > Use
> > > the placeholders.  I gaurantee you will be glad you did.  
> C'mon man!!! 
> > > Embrace the change.
> > >
> > > Rob Benton wrote:
> > >
> > >> There won't be any ['"] (read that as reg. expression) 
> inside the 
> > >> fields so that's not a problem.  All I need to do is 
> decide whether 
> > >> to single-quote the variable based on its data-type.  Also this 
> > >> will just be a select statement.
> > >>
> > >> On Mon, 2003-03-10 at 09:39, Dan Muey wrote:
> > >>  
> > >>
> > >>>> On Mon, 10 Mar 2003 08:18:31 -0600 Dan Muey 
> > >>>> <[EMAIL PROTECTED]>
> > >>>> wrote:
> > >>>>
> > >>>>     
> > >>>>
> > >>>>> Since you know how your table is structured :
> > >>>>>
> > >>>>> $query ="INSERT INTO stuff VALUES(NULL,$num,\'$character\')";
> > >>>>>
> > >>>>> Or if you wanted to do it dynamically :
> > >>>>>
> > >>>>> $query = "INSERT INTO stuff VALUES(";
> > >>>>> if($data =~ m/^\d+$/) { $query .= "$data\, "; }
> > >>>>> else { $query .= "\'$data\'\, "; }
> > >>>>>       
> > >>>>
> > >>>> The original poster wanted to make sure the values 
> were properly 
> > >>>> quoted.  If any "'" characters are in $character,     
> > >>>
> > >>> Aahhh gotcha, in that case yes definitely use quote() because it
> > >>> will take care of any charcaters that could casue 
> problems and not 
> > >>> just single quotes ( IE "(), etc.. )
> > >>>
> > >>> Sorry for misunderstanding
> > >>>
> > >>> DMuey
> > >>>
> > >>>   
> > >>>
> > >>>> the SQL you've given will not parse correctly, if the user is
> > >>>> lucky.  If the user is unlucky, it could contain malicious SQL.
> > >>>>
> > >>>> DBI already includes a method for properly quoting 
> values.  Oddly
> > >>>> enough it is named quote().  Read the fine manual to 
> learn about it.
> > >>>>
> > >>>> That said, for DBDs that support them (including DBD::Oracle),
> > >>>> placeholders are far superior.
> > >>>>
> > >>>> Again http://xmlproj.com/fom-serve/cache/49.html .
> > >>>>
> > >>>>     
> > >>>>
> > >>>>>> -----Original Message-----
> > >>>>>> From: Michael A Chase [mailto:[EMAIL PROTECTED]
> > >>>>>> Sent: Saturday, March 08, 2003 9:02 PM
> > >>>>>> To: [EMAIL PROTECTED]; Rob Benton
> > >>>>>> Subject: Re: need some advice
> > >>>>>>         
> > >>>>>> Placeholders.  There are examples of using them in 
> the fine DBI 
> > >>>>>> and DBD::Oracle manuals and in DBD-Oracle-xxx/Oracle.ex/ .
> > >>>>>>
> > >>>>>>         
> > >>>>>
> > >>>>> http://xmlproj.com/fom-serve/cache/49.html
> > >>>>>       
> > >>>>
> > >>>> --
> > >>>> Mac :})
> > >>>> ** I normally forward private questions to the 
> appropriate mail 
> > >>>> list. ** Ask Smarter: http://www.catb.org/~esr/faqs/smart-> 
> > >>>> questions.html
> > >>>> Give a hobbit a fish and he eats fish for a day.
> > >>>> Give a hobbit a ring and he eats fish for an age.
> > >>>>
> > >>>>
> > >>>>     
> > >>>
> > >>
> > >>
> > >>  
> > >>
> > >
> > >
> > 
> > 
> > 
> 
> 

Reply via email to