
PdoPgsql::escapeIdentifier는 PostgreSQL의 식별자를 안전하게.escape하는 메서드입니다. 식별자에 포함된 특수 문자를 제거하고, 문자열로 변환하여 SQL 쿼리에 안전하게 사용할 수 있도록 도와줍니다.
이 메서드를 사용할 때, 식별자에 포함된 모든 문자열을 전달해야 합니다. 예를 들어, 테이블 이름, 열 이름, 뷰 이름 등 모든 식별자를 전달해야 합니다.
PdoPgsql::escapeIdentifier를 사용하여 생성한 식별자를 DB에 insert 또는 update하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare('INSERT INTO 테이블명 (id, name) VALUES (:id, :name)');
$stmt->bindParam(':id', $id);
$stmt->bindParam(':name', $name);
$stmt->execute();
$stmt = $pdo->prepare('UPDATE 테이블명 SET name = :name WHERE id = :id');
$stmt->bindParam(':name', $name);
$stmt->bindParam(':id', $id);
$stmt->execute();
위의 예제에서, 테이블 이름, 열 이름, 뷰 이름 등 모든 식별자는 PdoPgsql::escapeIdentifier를 사용하여 안전하게.escape합니다.
예를 들어, 'SELECT * FROM ' . PdoPgsql::escapeIdentifier('테이블명') . ' WHERE id = ' . PdoPgsql::escapeIdentifier('테이블명.id')과 같은 형식으로 사용하는 것이 맞습니다. 하지만, 위의 예제에서와 같이 prepare() 메서드를 사용하여 쿼리를 안전하게 실행하는 것이 더 안전하고 효율적입니다.
또한, 다른 형식으로 사용하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare('SELECT * FROM ' . PdoPgsql::escapeIdentifier('테이블명') . ' WHERE id = ' . PdoPgsql::escapeIdentifier('테이블명.id'));
$stmt->execute();
하지만, 위의 예제와 같이 prepare() 메서드를 사용하여 쿼리를 안전하게 실행하는 것이 더 안전하고 효율적입니다.
2025-07-22 04:54