Latest web development tutorials
×

PHP 코스

PHP 코스 PHP 간략한 소개 PHP 설치 PHP 문법 PHP 변수 PHP echo/print PHP 데이터 유형 PHP 상수 PHP 현 PHP 운영자 PHP If...Else PHP Switch PHP 배열 PHP 배열을 정렬 PHP 자동 전역 PHP While 순환 PHP For 순환 PHP 기능 PHP 매직 변수 PHP 네임 스페이스 PHP 객체 지향

PHP 형태

PHP 형태 PHP 폼 인증 PHP 형태 - 필수 입력 사항 PHP 형태 - 확인 이메일 및 URL PHP 완전한 형태의 인스턴스 PHP $_GET 변수 PHP $_POST 변수

PHP 고급 자습서

PHP 다차원 배열 PHP 날짜 PHP 포함 PHP 파일 PHP 파일 업로드 PHP Cookie PHP Session PHP E-mail PHP 보안 E-mail PHP Error PHP Exception PHP 필터 PHP 고급 필터 PHP JSON

PHP 7 새로운 기능

PHP 7 새로운 기능

PHP 데이터베이스

PHP MySQL 간략한 소개 PHP MySQL 연결 PHP MySQL 데이터베이스 만들기 PHP MySQL 데이터 테이블 만들기 PHP MySQL 데이터를 삽입 PHP MySQL 여러 데이터를 삽입 PHP MySQL 문 준비 PHP MySQL 데이터 읽기 PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 간략한 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 실시간 검색 AJAX RSS Reader AJAX 투표

PHP 참조 설명서

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 이미지 처리 PHP RESTful

PHP PDO는 문과 저장 프로 시저를 준비

PHP PDO 참조 설명서 PHP PDO 참조 설명서

더 많은 성숙 데이터베이스는 준비된 명령문의 개념을 지원합니다.

준비된 명령문 무엇입니까? 변수 매개 변수를 사용하여 사용자 정의 할 수 있습니다 당신은 SQL을 실행하려면 컴파일 된 템플릿으로 생각하십시오. 준비된 문은 두 가지 중요한 이점을 제공합니다 :

  • 쿼리 만 리졸 (또는 전처리) 번하지만 동일 또는 상이한 파라미터를 여러 번 실행될 수있다. 쿼리가 준비되면, 데이터베이스 분석, 컴파일 및 쿼리 최적화 계획을 실행합니다. 사용자가 다른 매개 변수와 같은 쿼리를 여러 번 반복해야하는 경우 복잡한 쿼리를 들어,이 프로세스는 시간이 오래 걸리는, 프로세스는 크게 프로그램의 속도를 감소시킬 것이다. 분석 반복 준비된 명령문 피할를 사용하여 / / 최적화주기를 컴파일합니다. 즉, 문이 적은 리소스를 사용하여 빠르게 실행 준비했다.
  • 인용 부호를 사용할 필요가 없습니다 준비된 문에 매개 변수를 제공, 드라이버가 자동으로 처리됩니다. 응용 프로그램은 준비된 문을 사용하는 경우, 우리는 어떤 SQL 주입되도록 할 수 있습니다. (쿼리의 다른 부분을 구축하는 입력으로부터 탈출하지 않을 경우에는, SQL 인젝션의 위험이 여전히 존재한다).

그들은 단지 기능 정도로 유용 준비된 문은 운전자가 PDO를 지원하지 않는 아날로그 처리이다. 이없이 데이터베이스 기능을 갖고 있는지 여부는 애플리케이션이 동일한 데이터 액세스 패턴을 사용할 수 있도록 할 수 있음을 보장한다.

PreparedStatement들 반복 삽입

이름과 값으로 적절한 이름의 자리를 대체하여 다음 예는 삽입 쿼리를 실행합니다

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

PreparedStatement들 반복 삽입

이름과 값을 대입하여? 나타내지 다음의 예는 삽입 쿼리를 실행합니다.

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

// 用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

준비된 문을 사용하여 데이터를 가져 오기

데이터에 키 기반 액세스의 형태로 다음의 예는 이미 제공했다. 사용자 입력이 자동으로 따옴표로 묶여 있으므로 SQL 주입 공격의 위험이 없다.

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
?>

데이터베이스 드라이버를 지원하는 경우, 애플리케이션은 입력 및 출력 파라미터 출력 매개 변수는 전형적으로 저장 프로 시저의 값을 얻기 위해 사용되는 결합 할 수있다. 출력 매개 변수를 바인딩 할 때, 주어진 길이의 매개 변수를 알고 있어야하기 때문에 출력 매개 변수는 약간 더 복잡로 입력 매개 변수보다 사용합니다. 매개 변수의 값을 길이의 결합 권고보다 큰 경우, 에러를 생성 할 것이다.

출력 매개 변수가있는 저장 프로 시저를 호출

<?php
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $return_value\n";
?>

또한 매개 변수의 입력 및 출력 값을 지정할 수 있습니다, 구문은 출력 매개 변수와 유사하다. 저장 프로 시저 반환이, 안녕하세요 저장 프로 시저의 리턴 값으로 대체 될 때 다음 예에서 문자열은 "안녕하세요"저장 프로 시저에 전달됩니다.

입력으로 / 출력 매개 변수는 저장 프로 시저를 호출

<?php
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $value\n";
?>

자리의 잘못된 사용

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));

// 占位符必须被用在整个值的位置
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
?>

PHP PDO 참조 설명서 PHP PDO 참조 설명서