MySQL API 선택

PHP는 MySQL에 연결하기 위해 다양한 API를 제공합니다. 아래에서는 mysqli 및 PDO 확장에서 제공하는 API를 보여줍니다. 각 코드 조각은 사용자 이름 "user"와 암호 "password"를 사용하여 "example.com"에서 실행되는 MySQL 서버에 대한 연결을 생성합니다. 그리고 사용자를 맞이하는 쿼리가 실행됩니다.

예제 #1 MySQL API 비교

                  
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
                  
                

기능 비교

두 확장의 전반적인 성능은 거의 동일한 것으로 간주됩니다. 확장 기능의 성능은 PHP 웹 요청의 총 실행 시간의 일부에만 기여합니다. 종종 영향은 0.1%로 낮습니다.

  ext/mysqli PDO_MySQL
PHP 버전 도입 5.0 5.1
PHP 7.x 및 8.x에 포함 Yes Yes
개발 현황 Active Active
수명 주기 Active Active
신규 프로젝트에 권장 Yes Yes
OOP 인터페이스 Yes Yes
절차적 인터페이스 Yes No
API는 mysqlnd를 사용하여 비차단, 비동기 쿼리를 지원합니다. Yes No
영구 연결 Yes Yes
API는 문자 집합을 지원합니다. Yes Yes
API는 서버 측 준비된 문을 지원합니다. Yes Yes
API는 클라이언트 측 준비된 문을 지원합니다. No Yes
API는 저장 프로시저를 지원합니다. Yes Yes
API는 다중 명령문을 지원합니다. Yes Most
API는 트랜잭션을 지원합니다. Yes Yes
트랜잭션은 SQL로 제어할 수 있습니다. Yes Yes
모든 MySQL 5.1+ 기능 지원 Yes Most