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