쿼리 문이 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('id'=> 1,':name' => '张三', ':gender' => '男')); //再次执行 $stmt1->execute(array('id'=> 2,':name' => '李四', ':gender' => '女')); echo "插入成功!","<br>";
输出;插入成功!
추천: "2021 PHP 면접 질문 요약(모음)" "php 비디오 튜토리얼"
위 내용은 PHP의 prepare() 메소드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!