in reply to Re: mySQL Query Problem
in thread mySQL Query Problem


Here is a test I created to see the problem...considering this code:

#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); use BaboonDB; my $user = "user\"; my $name = "kidd"; my $place = "CANCUN%%MEXICO"; my $title = "A test to see the problem"; my $img = "none"; my $msg = "This is a test with a question, how are you?"; my $cat = "probl"; $user = lc($user); if($img =~ /^\s*$/){ $img = "none"; } $place = lc($place); my($state,$country) = split("%%", $place); #split te place $country =~ s/usa/estados unidos/g; $country = "\u$country"; $country =~ s/\s+(\w)/ \u$1/gi; $country =~ s///gi; $state = "\u$state"; $state =~ s/\s+(\w)/ \u$1/gi; my($dbh,$sth,@data,$actual); $dbh = BaboonDB->connect(); my $interval = "12"; #First we take the current date $sth = $dbh->prepare('SELECT CURRENT_DATE') or die("Couldn't prepar +e statement: " . $dbh->errstr); $sth->execute() or die("Couldn't execute statement: " . $sth->errst +r); $actual = $sth->fetchrow_array(); $sth->finish; #Now we add the date for the expiration $sth = $dbh->prepare('SELECT DATE_ADD("?", INTERVAL ? MONTH)') or d +ie("Couldn't prepare statement: " . $dbh->errstr); $sth->execute($actual,$interval) or die("Couldn't execute statement +: " . $sth->errstr); my $expiration = $sth->fetchrow_array(); $sth->finish; # $msg = $dbh->quote($msg); $sth = $dbh->prepare('INSERT INTO anuncios (usuario,titulo,mensaje, +categoria,estado,pais,imagen,image_align,expiracion,firma) VALUES(?,? +,?,?,?,?,?,?,?,?)') or die("Couldn't prepare statement: " . $dbh->err +str); $sth->execute($user,$title,$dbh->quote($msg),$cat,$state,$country,$ +img,'left',$expiration,$name) or die("Couldn't execute statement: " . + $sth->errstr); $sth->finish; $dbh->disconnect; exit(1);

I get this error:

DBD::mysqlPP::st execute failed: You have an error in your SQL syntax +near 'probl'''','Cancun','Mexico','none','left','2004-02-13','kidd',? +)' at line 1 at C:\WIN98\TEMP\DZPRLTMP.PL line 56.

But if a get the ? out of the $msg variable the script runs fine...

Im using the DBD::mysqlPP module...


Replies are listed 'Best First'.
Re^3: mySQL Query Problem
by adrianh (Chancellor) on Feb 14, 2003 at 08:51 UTC

    What version of DBD::mysqlPP are you using? There's a bug in versions earlier than 0.04 that might be causing your placeholder problem. See change log for details.