(PHP 8 >= 8.4.0)
Pdo\Pgsql::escapeIdentifier — SQL識別子として使用するために文字列をエスケープする
テーブル名、カラム名、または関数名など、SQL の識別子として使用する文字列をエスケープします。 これは、ユーザーから提供された識別子が特殊文字を含むため、 SQLパーサーが識別子の一部として解釈できない場合や、 大文字を含む識別子でそれを保持したい場合に有用です。
input
エスケープされた文字列(string) を返します。
例1 Pdo\Pgsql::escapeIdentifier() の例
<?php
$pdo = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$unescapedTableName = 'UnescapedTableName';
$pdo->exec("CREATE TABLE $unescapedTableName ()");
$escapedTableName = $pdo->escapeIdentifier('EscapedTableName');
$pdo->exec("CREATE TABLE $escapedTableName ()");
$statement = $pdo->query(
"SELECT relname FROM pg_stat_user_tables WHERE relname ilike '%tablename'"
);
var_export($statement->fetchAll(PDO::FETCH_COLUMN, 0));
$tableNameWithSymbols = 'Table-Name-With-Symbols';
$pdo->exec("CREATE TABLE $tableNameWithSymbols ()");
?>
上の例の出力は、 たとえば以下のようになります。
array ( 0 => 'unescapedtablename', 1 => 'EscapedTableName', ) Fatal error: Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "Table" LINE 1: CREATE TABLE Table-Name-With-Symbols ()