Escaping pling til mysql
Jeg har et super-weird problem med at escape plings til indsættelse i mysql-databasen.I config.pl ligger flg. metode...
sub mysql_convert
{
$felt = $_[0];
$felt =~ s/\'/\\\'/g;
$felt =~ s/\r/\n/g;
$felt =~ s/\x0D\x0A/\n/g; #PC
$felt =~ s/\x0D/\n/g; #MAC
$felt =~ s/\x0A/\n/g; #UNIX
return $felt;
}
test.pl - bare en simpel fil for at teste
#!/usr/bin/perl
require "config.pl" or die("Can't require configure.pl");
$test = "det'er der ingen ben i";
$test = mysql_convert($test);
print $test;
HER virker det sørme ... output er "det\'er der ingen ben i"
men i min xml-parse-fil-som-gemmer-i-database virker det ikke i flg. function...
my $sql_string="INSERT INTO tabel1 VALUES";
sub save_data
{
my $felt1 = @_[0];
my $felt2 = @_[1];
my $felt3 = @_[2];
my $felt4 = @_[3];
if($firstcall==0)
{
$sql_string .= ", ";
}
else
{
$firstcall=0;
}
$felt4 = mysql_convert($felt4);
$sql_string .= "($felt1, $felt2, $felt3, '$felt4')";
}
printer jeg det ud på skærmen står ' uden \ foran.. hvilket logisk nok medfører en fejl i mysql. Har ligeledes prøvet at sætte flg. linie $felt4 =~ s/\'/\\\'/g; ind lige før $sql_string linie.. (altså redundant escaping) ligeledes uden held.. de bliver ikke escaped. Jeg forstår ikke hvorfor der er forskel?