php 에서 데이터베이스 연결 방식 pdo 와 mysql 비교 분석

1)전체적인 비교
 
PDO
MySQLi
데이터베이스 지원
12 가지 서로 다른 데이터베이스 지원
MySQL 지원
API
OOP
OOP + 프로 세 스
Connection
Easy
Easy
명명 매개 변수
지지 하 다.
지지 하지 않 음
대상 맵 지원
지지 하 다.
지지 하 다.
전처리 문 
(클 라 이언 트)
지지 하 다.
지지 하지 않 음
성능
빠르다.
빠르다.
저장 프로시저 지원
지지 하 다.
지지 하 다.
2 연결 방식
 먼저 두 가지 데이터 베 이 스 를 연결 하 는 방식 을 살 펴 보 겠 습 니 다.

// PDO
$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');
// mysqli,
$mysqli = mysqli_connect('localhost','username','password','database');
// mysqli,
$mysqli = new mysqli('localhost','username','password','database');
3 데이터베이스 지원
PDO 는 다양한 데이터 베 이 스 를 지원 하지만 MYSQLI 는 MYSQL 만 지원 합 니 다.
4 이름 매개 변수 name parameter
PDO 방식:

$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);
$pdo->prepare('
SELECT * FROM users
WHERE username = :username
AND email = :email
AND last_login > :last_login');
MYSQLI 는 귀 찮 습 니 다.지원 하지 않 습 니 다.다음 과 같 을 수 밖 에 없습니다.

$query = $mysqli->prepare('
SELECT * FROM users
WHERE username = ?
AND email = ?
AND last_login > ?');
$query->bind_param('sss', 'test', $mail, time() - 3600);
$query->execute();
이렇게 되면 물음표 에 대한 순서 도 번 거 롭 고 불편 하 다.
5 ORM 맵 지원
예 를 들 어 하나의 user 가 있 는데 다음 과 같다.

class User
{
    public $id;
    public $first_name;
    public $last_name;
    public function info()
    {
        return '#' . $this->id . ': ' . $this->first_name . ' ' . $this->last_name;
    }
}
$query = "SELECT id, first_name, last_name FROM users";
// PDO
$result = $pdo->query($query);
$result->setFetchMode(PDO::FETCH_CLASS, 'User');
while ($user = $result->fetch())
{
    echo $user->info() . "
";
}
MYSQLI 는 프로 세 스 를 위 한 방식 으로:

if ($result = mysqli_query($mysqli, $query)) {
  while ($user = mysqli_fetch_object($result, 'User')) {
  echo $user->info()."
";
  }
}
MYSQLI 는 프로 세 스 를 위 한 방식 을 사용 합 니 다.

// MySQLi, object oriented way
if ($result = $mysqli->query($query)) {
  while ($user = $result->fetch_object('User')) {
  echo $user->info()."
";
  }
}
6 SQL 주입 방지:
PDO 수 동 설정

$username = PDO::quote($_GET['username']);
$pdo->query("SELECT * FROM users WHERE username = $username");
mysql 사용 하기

$username = mysqli_real_escape_string($_GET['username']);
$mysqli->query("SELECT * FROM users WHERE username = '$username'");
7 preparestament
 PDO 방식:

$pdo->prepare('SELECT * FROM users WHERE username = :username');
$pdo->execute(array(':username' => $_GET['username']));
MYSQLI:

$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');
$query->bind_param('s', $_GET['username']);
$query->execute();
젊은이 들 은 본 고 를 통 해 PHP 의 2 가지 링크 방식 인 PDO 와 my sql 에 대해 새로운 인식 을 가지 게 되 었 습 니까?본 고 는 여러분 에 게 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기