(PHP 8 >= 8.4.0)
Pdo\Pgsql::escapeIdentifier — Echappe une chaîne pour son utilisation en tant qu'identifiant SQL
Echappe une chaîne pour son utilisation en tant qu'identifiant SQL, tel qu'une table, une colonne ou un nom de fonction. Ceci est utile lorsque l'identifiant fourni par l'utilisateur pourrait contenir des caractères spéciaux qui ne seraient pas interprétés comme faisant partie de l'identifiant par l'analyseur SQL, ou lorsque l'identifiant pourrait contenir des caractères en majuscules dont la casse devrait être préservée.
input
Une string contenant les données échappées.
Exemple #1 Exemple de 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 ()");
?>
Résultat de l'exemple ci-dessus est similaire à :
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 ()