in reply to Re: Re: Perl with MS Access Weirdness
in thread Perl with MS Access Weirdness
You are right. I forgot to mention the binary=>1
If you insist on quoting you might like this:
Actually your code should look like this:use Interpolation "'" => sub {"'".$db->quote($_)}; my $sql = "update some_table where some_attr = $'{$some_string}'";
$some_string = $dbh->quote($some_string); my $sql = "update some_table where some_attr = '$some_string'";
There are two reasons for using placeholders. First is the quoting, second is speed. If you execute the same SQL command, just with different values, it's much quicker if you prepare the SQL and then just execute it with the values. The ->prepare() allows the SQL server to parse the query/command, prepare the execution plan and so forth. So by using prepare()&execute() you keep the server from having to reparse&recompile the SQL each time.
Jenda
P.S.: Yes, there are most probably databases that do not really support prepare(). The DBD for those will just remember the SQL, and quote and interpolate variables each time. Then there will be no preformance difference between prepare()&execute() and do().
|
|---|