> php教程 > PHP开发 > PHP 데이터 객체 PDO 작업 기술 요약

PHP 데이터 객체 PDO 작업 기술 요약

高洛峰
풀어 주다: 2016-12-28 17:09:24
원래의
1537명이 탐색했습니다.

이 기사의 예에서는 PHP 데이터 객체 PDO 작업 기술을 설명합니다. 다음과 같이 참조할 수 있도록 모든 사람과 공유하세요.

PHP 데이터 개체(PDO) 확장은 PHP가 데이터베이스에 액세스하기 위한 가볍고 일관된 인터페이스를 정의합니다.

<?php
 try {
  $dsn = "mysql:host=localhost; port=3306; dbname=wsq_hotel; charset=utf-8";
  $user = &#39;root&#39;;
  $psw =&#39;root&#39;;
  $pdo = new PDO($dsn,$user,$psw);
  $sql = &#39;select goods_prices from wsq_goods_info where goods_id=2&#39;;
  // $sql = "show database";
  $res = $pdo->query($sql) or var_dump($pdo->errorInfo());
  // var_dump($res);
  $mon = $res->fetch(PDO::FETCH_ASSOC);
  echo $mon[&#39;goods_price&#39;];
 } catch (PDOException $e) {
  echo $e->getMessage();
 }
?>
로그인 후 복사

PDO 연산 트랜잭션

//开启事务
beginTransacition()
//回滚
rollback()
//提交
commit()
//判断是否处于事务之中
inTransaction()
로그인 후 복사

마지막으로 삽입된 행의 ID를 반환

PDO::lastInsertID()
로그인 후 복사

exec() 실행

쿼리로 반환 () 이에 비해 exec()는 영향을 받은 행 수를 반환합니다

$sql = "insert into table values(&#39;$val&#39;)";
if(false===$pdo->exec($sql)){
 echo &#39;执行失败&#39;;
}
로그인 후 복사

PDO는 사전 컴파일을 구현합니다

는 sql의 구조를 사전 컴파일하는 sql 실행 구문을 말합니다

동일한 구조의 여러 SQL을 실행하는 경우 컴파일의 중간 결과(구문 트리)도 일관성이 있어야 합니다. 따라서 동일한 구조를 균일하게 컴파일하고 매번 다른 데이터로 실행할 수 있습니다.

통합 구조 컴파일

$pdoStatement = $pdo->prepare(sql结构)
로그인 후 복사

데이터를 중간 컴파일 결과에 바인딩

$pdoStatement ->bindValue()
로그인 후 복사

실행

$pdoStatement ->execute()
//$sql = "insert into table values(null,?)";
$sql = "insert into table values(null,:name)";
$stmt = $pdo->prepare($sql);
//多组数据也是一编译一执行
//$stmt->bindValue(1,&#39;bee&#39;);
$stmt->bindValue(&#39;:name&#39;,&#39;bee&#39;);
$res = $stmt->execute();
var_dump($res);
로그인 후 복사

사전 컴파일이 더 좋습니다. 사용자의 데이터가 사전 컴파일에 참여할 필요가 없으므로 SQL 주입을 방지하므로 컴파일 중에 구조가 고정되므로 데이터가 SQL 구조에 영향을 미치지 않습니다.

$pdo->query() 및 $pdo->execute() SQL 주입을 방지해야 하는 경우 $pdo->quote()를 사용할 수 있습니다(해당 기능은 먼저 이스케이프하고 그런 다음 따옴표를 추가하세요)

PDOstatement의 일반적인 방법:

errorInfo()
errorCode()
fetchColumn()
fetch()
fetchAll()
rowCount()
closeCursor()

pdo 애플리케이션

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);
 class PDODB{
  static private $_init;
  private $_host;
  private $_port;
  private $_dbname;
  private $_username;
  private $_password;
  private $_charset;
  private $_dns;
  private $_pdo;
  private function __construct($config){
   $this->_initParamas($config);
   $this->_initDNS();
   $this->_initDriverOptions();
   $this->_initPDO();
  }
  private function __clone(){}
  static public function getInstance($config){
   if(!static::$_init instanceof static){
    static::$_init = new static($config);
   }
   return static::$_init;
  }
  private function _initParamas($config){
   $this->_host = isset($config[&#39;host&#39;])?$config[&#39;host&#39;]:&#39;localhost&#39;;
   $this->_port = isset($config[&#39;port&#39;])?$config[&#39;port&#39;]:&#39;3306&#39;;
   $this->_dbname = isset($config[&#39;dbname&#39;])?$config[&#39;dbname&#39;]:&#39;&#39;;
   $this->_username = isset($config[&#39;username&#39;])?$config[&#39;username&#39;]:&#39;root&#39;;
   $this->_passward = isset($config[&#39;passward&#39;])?$config[&#39;passward&#39;]:&#39;&#39;;
   $this->_charset = isset($config[&#39;charset&#39;])?$config[&#39;charset&#39;]:&#39;utf8&#39;;
  }
  private function _initDNS(){
   $this->_dns = "mysql:host=$this->_host;port=$this->_port;dbname=$this->_dbname";
  }
  private function _initDriverOptions(){
   $this->_driverOptions = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "set names $this->_charset"
   );
  }
  private function _initPDO(){
   $this->_pdo = new PDO($this->_dns,$this->_username,$this->_passward,$this->_driverOptions) or die("fail");
  }
  public function query($sql){
   if(!$result = $this->_pdo->query($sql)){
    $erro = $this->_pdo->errorInfo();
    echo &#39;失败的语句&#39;.$sql.&#39;<br>&#39;;
    echo &#39;错误代码&#39;.$erro[1].&#39;<br>&#39;;
    echo &#39;错误信息&#39;.$erro[2].&#39;<br>&#39;;
    die;
   }
   return $result;
  }
  public function fetchAll($sql){
   $res = $this->query($sql);
   $list = $res->fetchAll(PDO::FETCH_ASSOC);
   $res->closeCursor();
   return $list;
  }
  public function fetchRow($sql){
   $res = $this->query($sql);
   $row = $res->fetch(PDO::FETCH_ASSOC);
   $res->closeCursor();
   return $row;
  }
  public function fetchOne($sql){
   $res = $this->query($sql);
   $one = $res->fetchColumn();
   $res->closeCursor();
   return $one;
  }
  public function escape_string($data){
   return $this->_pdo->quote($data);
  }
 }
 $config = array(
  "host"=>"localhost",
  "username"=>"root",
  "passward"=>"root",
  "dbname"=>"students"
 );
 $pdo = PDODB::getInstance($config);
 $sql = "select sdept from student where sage=21";
 var_dump($pdo->fetchRow($sql));
?>
로그인 후 복사

실행 효과 다이어그램은 다음과 같습니다.

PHP 데이터 객체 PDO 작업 기술 요약

이 기사가 PHP 프로그램 디자인에 도움이 되는 모든 사람에게 도움이 되기를 바랍니다.

PHP 데이터 객체 PDO 연산 스킬 요약과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿