>  기사  >  백엔드 개발  >  PHP의 prepare() 메소드 분석

PHP의 prepare() 메소드 분석

autoload
autoload원래의
2021-04-27 12:53:456164검색

PHP의 prepare() 메소드 분석

쿼리 문이 MySQL 서비스로 전송될 때마다 쿼리 구문을 구문 분석하여 구조가 올바르고 실행될 수 있는지 확인해야 합니다. 이는 프로세스에서 필요한 단계이지만 약간의 오버헤드가 발생합니다. 한 번은 꼭 해야 하는데 동일한 쿼리를 반복적으로 실행하고 여러 행을 일괄 삽입할 때 컬럼 값만 변경하면 준비된 문은 해당 쿼리의 구문과 실행 과정을 서버에 캐시하고, 이 추가 오버헤드를 제거하려면 서버와 클라이언트 간에 데이터를 전송하세요.

먼저 PDO::prepare 구문을 살펴보겠습니다.

public PDO::prepare ( string $statement   , array $driver_options = array()   ) : PDOStatement
  • $statement: 대상 데이터베이스 서버에 대해 유효한 SQL 문 템플릿이어야 합니다.

  • $driver_options: 배열에는 하나 이상의 key=>value 키-값 쌍이 포함되어 있으며 반환된 PDOStatement 객체에 대한 속성을 설정합니다.

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

코드 예시:

1. 데이터베이스에 연결

<?php
$servername="localhost";
$username="root";
$password="root123456";
$dbname="my_database";
$pdo=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
echo "连接成功"."<br>";
$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);
输出:连接成功

2. 물음표 매개변수를 사용하여 SQL 문 준비

$sql ="select * from fate where `id`=?";
$statement=$pdo->query("select * from fate where `id`=3 ");
var_dump($statement->fetch());

echo "<br>";
$stmt2 = $pdo->prepare($sql);
$stmt2 ->execute(array(3));
var_dump($stmt2->fetch());
输出:array(6) {["ID"]=>string(1) "3"0]=>string(1) "3"["NAME"]=>string(7) "luncher"[1]=>string(7) "luncher"["AGE"]=>string(2) "56"[2]=>string(2) "56"}
array(6) {["ID"]=>string(1) "3"[0]=>string(1) "3"["NAME"]=>string(7) "luncher"[1]=>string(7) "luncher"["AGE"]=>string(2) "56"[2]=>string(2) "56"}

3. 이름 지정 매개변수를 사용하여 준비 SQL 문

$query = "insert into tp_user (id,name,gender)values(:id,:name ,:gender)";
//准备语句
$stmt1 = $pdo->prepare($query);
// 执行查询
$stmt1->execute(array(&#39;id&#39;=> 1,&#39;:name&#39; => &#39;张三&#39;, &#39;:gender&#39; => &#39;男&#39;));
//再次执行
$stmt1->execute(array(&#39;id&#39;=> 2,&#39;:name&#39; => &#39;李四&#39;, &#39;:gender&#39; => &#39;女&#39;));
echo "插入成功!","<br>";
输出;插入成功!

추천: "2021 PHP 면접 질문 요약(모음)" "php 비디오 튜토리얼"

위 내용은 PHP의 prepare() 메소드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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