« Pdo\Pgsql::copyToFile
Pdo\Pgsql::getNotify »

Pdo\Pgsql::escapeIdentifier

(PHP 8 >= 8.4.0)

Pdo\Pgsql::escapeIdentifier — SQL識別子として使用するために文字列をエスケープする

説明

public function Pdo\Pgsql::escapeIdentifier(string $input): string

テーブル名、カラム名、または関数名など、SQL の識別子として使用する文字列をエスケープします。 これは、ユーザーから提供された識別子が特殊文字を含むため、 SQLパーサーが識別子の一部として解釈できない場合や、 大文字を含む識別子でそれを保持したい場合に有用です。

パラメータ

input

エスケープ対象の文字列(string)

戻り値

エスケープされた文字列(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 ()

参考

  • PDO::quote() - クエリ用の文字列をクオートする
関連キーワード:
Pgsql   識別子   エスケープ   escapeIdentifier   exec   Table   input   user   unescapedTableName   escapedTableName   EscapedTableName   statement   relname   tableNameWithSymbols   Symbols   copyToFile   getNotify   テーブル   カラム   提供   パーサー   一部   解釈   大文字   保持
関連する関数・ページ:
pdo-pgsql.copytofile   pdo-pgsql.getpid   pdo-pgsql.copytoarray   class.pdo-pgsql   pdo-pgsql.lobunlink   pdo-pgsql.getnotify