>  기사  >  백엔드 개발  >  PHP 준비의 사용법은 무엇입니까

PHP 준비의 사용법은 무엇입니까

藏色散人
藏色散人원래의
2022-01-24 10:24:032893검색

PHP에서 "PDO::prepare"는 실행할 명령문을 준비하고 명령문 객체를 반환하는 것을 의미합니다. 사용법 구문은 "public PDO::prepare(string $statement, array $driver_options = array())"와 같습니다. .

PHP 준비의 사용법은 무엇입니까

이 기사의 운영 환경: Windows 7 시스템, PHP 8 버전, DELL G3 컴퓨터

php prepare의 사용법은 무엇입니까?

PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo >= 0.1.0)

PDO::prepare — 실행 문 준비 , 그리고 명령문 객체를 반환합니다.

Description

public PDO::prepare(string $statement, array $driver_options = array()): PDOStatement

PDOStatement::execute() 메서드에 대해 실행될 SQL 문을 준비합니다. 명령문 템플릿에는 실행 시 실제 데이터로 대체되는 이름(:name) 또는 물음표(?) 형식의 매개 변수 자리 표시자 표시가 0개 이상 포함될 수 있습니다. 동일한 명령문 템플릿에서는 명명된 형식과 물음표 형식을 동시에 사용할 수 없으며 매개변수 형식 중 하나만 선택할 수 있습니다. 사용자가 입력한 데이터를 바인딩하려면 매개변수 형식을 사용하고, 문자열을 쿼리에 직접 연결하지 마세요.

PDOStatement::execute()를 호출할 때 각 값의 매개변수 자리 표시자 표시에는 고유한 이름이 있어야 합니다. 에뮬레이션 모드를 활성화하지 않으면 동일한 이름의 매개변수를 동일한 문에서 사용할 수 없습니다.

참고:

매개변수 자리 표시자는 문자 그대로 전체 데이터만 표시할 수 있습니다. 리터럴, 키워드, 식별자 또는 기타 임의 범위의 일부일 수 없습니다. 예: 여러 값을 단일 매개변수에 바인딩한 다음 SQL 문에서 IN() 쿼리를 사용할 수 없습니다.

다른 매개변수를 사용하여 PDO::prepare() 및 PDOStatement::execute()를 통해 동일한 SQL 문을 여러 번 호출하면 애플리케이션 성능이 향상됩니다. 드라이버는 클라이언트/서버가 쿼리를 캐시하도록 허용할 수 있습니다. 그리고 메타정보. 동시에 PDO::prepare() 및 PDOStatement::execute()를 호출하면 수동으로 매개변수를 인용하거나 이스케이프하지 않고도 SQL 주입 공격을 방지할 수 있습니다.

내장 드라이버가 매개변수를 지원하지 않는 경우 PDO는 매개변수의 기능을 시뮬레이션합니다. 드라이버가 스타일(이름이 지정된 매개변수 및 물음표 매개변수) 중 하나만 지원하는 경우 자동으로 다른 스타일로 다시 작성됩니다.

注意: The parser used for emulated prepared statements and for rewriting named or question mark style parameters supports the non standard backslash escapes for single- and double quotes. That means that terminating quotes immediately preceeded by a backslash are not recognized as such, which may result in wrong detection of parameters causing the prepared statement to fail when it is executed. A work-around is to not use emulated prepares for such SQL queries, and to avoid rewriting of parameters by using a parameter style which is natively supported by the driver.

매개변수

statement

는 대상 데이터베이스 서버에 대해 유효한 SQL 문 템플릿이어야 합니다.

driver_options

배열에는 반환된 PDOStatement 개체의 속성을 설정하기 위한 하나 이상의 key=>value 키-값 쌍이 포함되어 있습니다. 일반적인 사용법은 다음과 같습니다. PDO::ATTR_CURSOR를 PDO::CURSOR_SCROLL로 설정하면 스크롤 가능한 커서가 생성됩니다. 일부 드라이버에는 준비 중에 설정되는 드라이버 수준 옵션이 있습니다.

반환 값

데이터베이스 서버가 명령문 준비를 완료하면 PDO::prepare()는 PDOStatement 객체를 반환합니다. 데이터베이스 서버가 명령문을 준비할 수 없는 경우 PDO::prepare()는 false를 반환하거나 PDOException을 발생시킵니다(오류 핸들러에 따라 다름).

참고:

시뮬레이션 모드의 prepare 문은 데이터베이스 서버와 상호 작용하지 않으므로 PDO::prepare()는 문을 확인하지 않습니다.

예제

예제 #1 명명된 매개변수 형태의 SQL 문 템플릿

<?php
/* 传入数组的值,并执行准备好的语句 */
$sql = &#39;SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour&#39;;
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(&#39;:calories&#39; => 150, &#39;:colour&#39; => &#39;red&#39;));
$red = $sth->fetchAll();
$sth->execute(array(&#39;:calories&#39; => 175, &#39;:colour&#39; => &#39;yellow&#39;));
$yellow = $sth->fetchAll();
?>

예제 #2 물음표 형태의 SQL 문 템플릿

<?php
/* 传入数组的值,并执行准备好的语句 */
$sth = $dbh->prepare(&#39;SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?&#39;);
$sth->execute(array(150, &#39;red&#39;));
$red = $sth->fetchAll();
$sth->execute(array(175, &#39;yellow&#39;));
$yellow = $sth->fetchAll();
?>

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 준비의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.