私はPDO::quoteを使用してSQL文を生成しています。生成されたSQLを使用してmemcached
キーを作成します。私は、SQL値をエスケープするためだけに接続を作成する必要はありません。PHP PDO :: quoteメソッドを使用せずに接続を作成する方法はありますか?
PDO :: quoteメソッドを使用するための接続を確立する必要があり、回避することはできますか?
私はPDO::quoteを使用してSQL文を生成しています。生成されたSQLを使用してmemcached
キーを作成します。私は、SQL値をエスケープするためだけに接続を作成する必要はありません。PHP PDO :: quoteメソッドを使用せずに接続を作成する方法はありますか?
PDO :: quoteメソッドを使用するための接続を確立する必要があり、回避することはできますか?
エスケープ変数の概念は、エスケープされるデータベース接続のコンテキストでのみ意味があるため、接続が必要です。異なる文字は、MySQLとPostgreSQLによって、あるいは接続の文字セットによって異なって解釈されるかもしれません。だから、真空中で変数をエスケープすることについて話すのは理にかなっていません。結果の文字列をどのように解釈するかという考えが必要です。
多分memcachedのキーとして何かを使うことができます。
PDOは抽象レイヤーであり、各データベースの引用方法が異なるためです。 PDOは、適切な引用/エスケープAPI呼び出しを使用するために使用するデータベースを知っていなければなりません。
SQLが使用されるドライバがわかっている場合は、独自の関数を書いてください。
/**
* @param {string|int|null} $data
* @return string
*/
function quote ($data) {
if (is_float($data) || is_int($data)) {
return $data;
} else if (is_string($data)) {
return '\'' . addslashes($data) . '\'';
} else if ($data) {
throw new Exception('Invalid data type.');
} else {
return 'NULL';
}
}
使用例:別のプログラムによって後で実行されるSQLコードを生成するために使用されるCLIプログラムがあります。このシナリオでは、MySQL接続の確立は冗長であり、望ましくない可能性があります。
私は真空でエスケープすることについて話すのは理にかなっていませんが、引用するだけでDBに接続することは過度のように思えます。私はdbパラメータが必要だと理解していますが、それらはPDOコンストラクタにあります。私はpostgresqlを使用しています...私は接続がまだ作成されていないときにカスタム見積もりを使用すると思います –