PHP 가 MySQL 데이터 베 이 스 를 연결 하 는 세 가지 방식 의 실례 분석[mysql,mysql,pdo]

이 사례 는 PHP 가 MySQL 데이터 베 이 스 를 연결 하 는 세 가지 방식 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
PHP 와 MySQL 의 연결 은 세 가지 API 인터페이스 가 있 는데 그것 이 바로 PHP 의 MySQL 확장,PHP 의 mysql 확장,PHP 데이터 대상(PDO)이다.다음은 상기 세 가지 연결 방식 에 대해 정리 하고 서로 다른 장면 에서 가장 좋 은 방안 을 선택 할 수 있 도록 한다.
PHP 의 MySQL 확장 은 php 응용 과 MySQL 데이터베이스 의 상호작용 을 허용 하 는 디자인 개발 의 초기 확장 입 니 다.MySQL 확장 은 프로 세 스 를 위 한 인 터 페 이 스 를 제공 하고 MySQL 4.1.3 또는 더 빠 른 버 전 을 위 한 디자인 입 니 다.따라서 이 확장 자 는 MySQL 4.1.3 또는 업 데 이 트 된 데이터베이스 서버 와 상호작용 을 할 수 있 지만 후기 MySQL 서버 가 제공 하 는 일부 기능 은 지원 되 지 않 습 니 다.너무 오래 되 고 안전 하지 않 기 때문에 나중에 my sql 에 의 해 완전히 대체 되 었 습 니 다.
PHP 의 my sql 확장 은 MySQL 증강 확장 이 라 고도 부 릅 니 다.MySQL 4.1.3 또는 업데이트 버 전의 새로운 고급 기능 을 사용 할 수 있 습 니 다.대상 인터페이스,prepared 구문 지원,다 중 구문 실행 지원,트 랜 잭 션 지원,강 화 된 디 버 깅 능력,내장 형 서비스 지원,예비 처리 방식 으로 sql 주입 문 제 를 완전히 해결 한 것 이 특징 이다.하지만 mysql 데이터베이스 만 지원 하 는 단점 도 있다.만약 네가 다른 데이터 베 이 스 를 조작 하지 않 는 다 면,이것 은 의심 할 여지없이 가장 좋 은 선택 이다.
PDO 는 PHP Data Objects 의 줄 임 말로 PHP 응용 중의 데이터베이스 추상 층 규범 이다.PDO 는 통 일 된 API 인 터 페 이 스 를 제공 하여 PHP 응용 프로그램 이 구체 적 으로 연결 할 데이터베이스 서버 시스템 유형 에 관심 을 가지 지 않도록 할 수 있 습 니 다.즉,PDO 의 API 를 사용 하면 필요 할 때 틈 없 이 데이터베이스 서버 를 전환 할 수 있 습 니 다.예 를 들 어 Oracle 에서 MySQL 까지 아주 적은 PHP 코드 만 수정 해 야 합 니 다.그 기능 은 JDBC,ODBC,DBI 와 같은 인터페이스 와 유사 하 다.마찬가지 로 sql 주입 문 제 를 해결 하여 안전성 이 좋 습 니 다.그러나 그 에 게 도 단점 이 있다.어떤 다 문 구 는 조 회 를 수행 하 는 것 이 지원 되 지 않 는 다(그러나 이 상황 은 매우 적다).
관 문 은 세 사람 사이 에 도 리스트 적 인 비 교 를 했다.
 
PHP 의 my sql 확장
PDO
PHP 의 my sql 확장
도입 한 PHP 버 전
5.0
5.0
3.0 이전
PHP 5.x 포함 여부
예.
예.
예.
MySQL 개발 상태
활발 하 다.
PHP 5.3 에서 활약
유지 보수
MySQL 새 프로젝트 의 권장 사용 정도
제안.-첫 번 째.
건의 하 다.
건의 하지 않다
API 문자 집합 지원
예.
예.
아니.
서버 prepare 문장의 지원 상황
예.
예.
아니.
클 라 이언 트 prepare 문장의 지원 상황
아니.
예.
아니.
저장 프로시저 지원 현황
예.
예.
아니.
다 중 구문 실행 지원 현황
예.
대다수
아니.
모든 MySQL 4.1 이상 기능 지원 여부
예.
대다수
아니.
 
공식 적 으로 제 시 된 이 결 과 를 보면 msqli 를 우선 추천 하고 그 다음은 PDO 이다.한편,'민간'이 내 놓 은 결 과 는 대부분이 PDO 를 사용 하 는 경향 이 있다.라 이브 러 리 를 뛰 어 넘 는 장점 을 부담 하지 않 고 읽 기와 쓰기 속도 가 빠르다 는 특징 이 있 기 때문이다.
1.PHP 와 Mysql 확장(이 확장 자 는 PHP 5.5.0 부터 폐기 되 었 으 며 나중에 제거 될 것 입 니 다),PHP 원생 방식 으로 데이터 베 이 스 를 연결 하 는 것 은 프로 세 스 를 위 한 것 입 니 다.

<?php
$mysql_conf = array(
  'host'  => '127.0.0.1:3306', 
  'db'   => 'test', 
  'db_user' => 'root', 
  'db_pwd' => 'root', 
  );
$mysql_conn = @mysql_connect($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
if (!$mysql_conn) {
  die("could not connect to the database:
" . mysql_error());// } mysql_query("set names 'utf8'");// $select_db = mysql_select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:
" . mysql_error()); } $sql = "select * from user;"; $res = mysql_query($sql); if (!$res) { die("could get the res:
" . mysql_error()); } while ($row = mysql_fetch_assoc($res)) { print_r($row); } mysql_close($mysql_conn); ?>
2.PHP 와 Mysqli 확장,프로 세 스,대상 지향

<?php
$mysql_conf = array(
  'host'  => '127.0.0.1:3306', 
  'db'   => 'test', 
  'db_user' => 'root', 
  'db_pwd' => 'joshua317', 
  );
$mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
if ($mysqli->connect_errno) {
  die("could not connect to the database:
" . $mysqli->connect_error);// } $mysqli->query("set names 'utf8';");// $select_db = $mysqli->select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:
" . $mysqli->error); }$sql = "select uid from user where name = 'joshua';"; $res = $mysqli->query($sql); if (!$res) { die("sql error:
" . $mysqli->error); } while ($row = $res->fetch_assoc()) { var_dump($row); } $res->free(); $mysqli->close(); ?>
3.PHP 와 PDO 확장,프로 세 스,대상 지향

<?php
$mysql_conf = array(
  'host'  => '127.0.0.1:3306', 
  'db'   => 'test', 
  'db_user' => 'root', 
  'db_pwd' => 'joshua317', 
  );
$pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//    pdo  
$pdo->exec("set names 'utf8'");
$sql = "select * from user where name = ?";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, 'joshua', PDO::PARAM_STR);
$rs = $stmt->execute();
if ($rs) {
  // PDO::FETCH_ASSOC       
  // PDO::FETCH_NUM         
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    var_dump($row);
  }
}
$pdo = null;//    
?>

더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기