PHP Conference Japan 2024

Pdo\Pgsql::escapeIdentifier

(PHP 8 >= 8.4.0)

Pdo\Pgsql::escapeIdentifier转义字符串以用作 SQL 标识符

描述

public 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 ()

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top