Andrew Kennard wrote: > Hi all > > Done lots of googling but this simple thing still has me stumped > > The perl code to insert stuff into an mysql table is this > > my $Vals; > for ( my $i=1;$i<=32;$i++ ) { > $Vals.='?,'; > }
Hmm, that seems like it would give you an extra comma at the end. BTW, you could shorten that loop to: $Vals .= '?,' for 1..32; I would use something like this to get placeholders for each value in @TheRecord: my $Vals = join ',', ('?') x @TheRecord; (obviously that would need to go after the line that populates @TheRecord). > chop $Vals; Oh, I see where the extra comma is being removed. Clunky code, use my cool stuff instead :~) > my @TheRecord=&GenMainRecData(); > my $sth = $dbh->prepare("INSERT INTO mytable VALUES($Vals)"); > $sth->execute(@TheRecord); > > This works fine until I have single quores (') in the data eg > O'Connor etc > > The data saved in the field ends up being OConnor > > I've tried putting \\\' in the string but this gives me O\Connor What you're doing should be working. The execute method should properly quote your parameters. You might try setting DBI->trace(2) prior to the call to execute() to get some debugging output. Maybe that will help to pinpoint the problem. > > I've also tried > foreach $fld (@TheRecord){ > push (@Processed,$dbh->quote($fld)); > } No, you shouldn't have to do that. Your first approach is correct, so we need to find out what's going wrong there... -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>