DBI はすべてのエスケープを処理します。文字列の場合は になります'rajeev'
。呼び出すselect * from table where name = rajeev
とエラーになります。
数値を指定すると、引用符は必要ないため追加されません。
DBI Docを参照してください。また、次のようにも述べています。
quote() メソッドは、「プレースホルダーとバインド値」では使用しないでください。
使用している DBD によっては、プレースホルダーを使用すると、引用が処理されることがあります。あなたの場合、ドキュメントに記載されているようにDBD::mysqlが呼び出されます。$dbh->quote()
別のアプローチは、
$dbh->do("INSERT INTO foo VALUES (?, ?)", undef, $number, $name);
その場合、quote メソッドは自動的に実行されます。
クエリ ログにアクセスできる場合は、クエリがどのように表示されるかを確認できます。時間がかかるクエリがある場合は、mysql コンソールを開いてSHOW FULL PROCESSLIST;
、実行中のクエリのリストを表示することもできます。これには、参照する完全な SQL ステートメントも保持されます。Windows では、HeidiSQLを使用して実行できます。