You generally use placeholders or DBI's quote but usually not both. I never use quote myself. placeholders are generally the way to go because you can often prepare the SQL once with the placeholders and execute as many times as you like - thus saving parsing and preparing of the SQL repeatedly.
When DBI says don't quote placeholders it means don't run the quote method on placeholders i.e., don't do:
$s = $h->prepare(/select * from table where a = ?/); $s->execute($h->quote("myvalueforcolumna"));
You use quote when you are building all the SQL yourself and not using placeholders so the above would be:
$s = $h->prepare(q/select * from table where a = / . $h->quote("myva +lueforcolumna");
Try and stick with placeholders. I don't know your schema but you can usually do something like:
select col1, col2, col3 from tab_name where (? is null or foo = ?) a +nd (? is null or bar = ?) and (? is null or baz = ?)
then pass each value for foo, bar and baz twice
In reply to Re^3: DBI, place holders and CGI forms
by mje
in thread DBI, place holders and CGI forms
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |