PDO::quote
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)
PDO::quote — 쿼리에 사용할 문자열을 인용합니다.
설명
public PDO::quote(string $string
, int $type
= PDO::PARAM_STR): string|false
PDO::quote()는 (필요한 경우) 입력 문자열 주위에 따옴표를 배치하고 기본 드라이버에 적절한 인용 스타일을 사용하여 입력 문자열 내에서 특수 문자를 이스케이프합니다.
이 함수를 사용하여 SQL 문을 빌드하는 경우 PDO::quote()를 사용하여 SQL 문으로 사용자 입력을 보간하는 대신 PDO::prepare()를 사용하여 바인딩된 매개변수가 있는 SQL 문을 준비하는 것이 좋습니다. 바인딩된 매개변수가 있는 준비된 명령문은 SQL 주입에 대한 내성이 있고 이식성이 더 높을 뿐만 아니라 서버 측과 클라이언트 측 모두 컴파일된 형식의 쿼리를 캐시할 수 있기 때문에 종종 보간된 쿼리보다 실행 속도가 훨씬 빠릅니다.
모든 PDO 드라이버가 이 메서드를 구현하는 것은 아닙니다(특히 PDO_ODBC). 대신 준비된 문을 사용하는 것이 좋습니다.
주의
보안: 기본 문자 집합
문자 집합은 서버 수준 또는 데이터베이스 연결 자체(드라이버에 따라 다름)에서 설정해야 PDO::quote()에 영향을 줍니다. 자세한 내용은 드라이버별 설명서를 참조하십시오.
매개변수
string
- 인용할 문자열입니다.
type
- 대체 인용 스타일이 있는 드라이버의 데이터 유형에 대한 힌트를 제공합니다. 예를 들어 PDO_PARAM_LOB는 드라이버에 바이너리 데이터를 이스케이프하도록 지시합니다.
반환 값
이론적으로 SQL 문에 전달하기에 안전한 인용 문자열을 반환합니다. 드라이버가 이러한 방식으로 인용을 지원하지 않으면 false
를 반환합니다.
Examples
예제 #1 일반 문자열 인용하기
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Simple string */
$string = 'Nice';
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>
위의 예는 다음을 출력합니다.
Unquoted string: Nice Quoted string: 'Nice'
예제 #2 위험한 문자열 인용하기
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Dangerous string */
$string = 'Naughty \' string';
print "Unquoted string: $string\n";
print "Quoted string:" . $conn->quote($string) . "\n";
?>
위의 예는 다음을 출력합니다.
Unquoted string: Naughty ' string Quoted string: 'Naughty '' string'
예제 #3 복잡한 문자열 인용하기
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Complex string */
$string = "Co'mpl''ex \"st'\"ring";
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>
위의 예는 다음을 출력합니다.
Unquoted string: Co'mpl''ex "st'"ring Quoted string: 'Co''mpl''''ex "st''"ring'
기타
- PDO::prepare() - 실행할 명령문을 준비하고 명령문 개체를 반환합니다.
- PDOStatement::execute() - 준비된 명령문을 실행합니다.