>  기사  >  백엔드 개발  >  PHP에서 프리레어를 사용하는 방법

PHP에서 프리레어를 사용하는 방법

小老鼠
小老鼠원래의
2023-05-10 17:15:241501검색

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

PHP에서 프리레어를 사용하는 방법

이 튜토리얼의 운영 체제: Windows 10 시스템, PHP 버전 8.1.3, 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)或问号(?)的形式,当它执行时将用真实数据取代。 在同一个语句模板里,命名形式和问号形式不能同时使用;只能选择其中一种参数形式。 请用参数形式绑定用户输入的数据,不要直接字符串拼接到查询里。

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

참고:

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

다른 매개변수를 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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