Heim > php教程 > PHP开发 > Zusammenfassung der Kenntnisse im PDO-Betrieb von PHP-Datenobjekten

Zusammenfassung der Kenntnisse im PDO-Betrieb von PHP-Datenobjekten

高洛峰
Freigeben: 2016-12-28 17:09:24
Original
1580 Leute haben es durchsucht

Die Beispiele in diesem Artikel beschreiben die PDO-Betriebsfähigkeiten von PHP-Datenobjekten. Geben Sie es wie folgt als Referenz an alle weiter:

PHP Data Object (PDO)-Erweiterung definiert eine schlanke, konsistente Schnittstelle für PHP für den Zugriff auf die Datenbank.

<?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();
 }
?>
Nach dem Login kopieren

PDO-Operationstransaktion

//开启事务
beginTransacition()
//回滚
rollback()
//提交
commit()
//判断是否处于事务之中
inTransaction()
Nach dem Login kopieren

ID der zuletzt eingefügten Zeile zurückgeben

PDO::lastInsertID()
Nach dem Login kopieren

exec()-Ausführung

mit Abfrage () Im Vergleich dazu gibt exec() die Anzahl der betroffenen Zeilen zurück

$sql = "insert into table values(&#39;$val&#39;)";
if(false===$pdo->exec($sql)){
 echo &#39;执行失败&#39;;
}
Nach dem Login kopieren

PDO implementiert die Vorkompilierung

bezieht sich auf eine Syntax zum Ausführen von SQL, die die Struktur von SQL vorkompiliert

Wenn mehrere SQLs mit derselben Struktur ausgeführt werden, sollten auch die Zwischenergebnisse der Kompilierung (Syntaxbaum) konsistent sein. Daher kann dieselbe Struktur einheitlich kompiliert und jedes Mal mit unterschiedlichen Daten ausgeführt werden.

Einheitliche Struktur kompilieren

$pdoStatement = $pdo->prepare(sql结构)
Nach dem Login kopieren

Daten an Zwischenkompilierungsergebnisse binden

$pdoStatement ->bindValue()
Nach dem Login kopieren

Ausführung

$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);
Nach dem Login kopieren

Vorkompilierung ist besser Dies effektiv Verhindert die SQL-Injection, da die Daten des Benutzers nicht für die Teilnahme an der Vorkompilierung erforderlich sind. Daher wird die Struktur während der Kompilierung festgelegt, sodass die Daten keinen Einfluss auf die SQL-Struktur haben.

$pdo->query() und $pdo->execute() Wenn Sie SQL-Injection verhindern müssen, können Sie $pdo->quote() verwenden (seine Funktion besteht darin, zuerst zu maskieren und dann Anführungszeichen hinzufügen)

Gängige Methoden der PDO-Anweisung:

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

pdo application

<?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));
?>
Nach dem Login kopieren

Das laufende Effektdiagramm sieht wie folgt aus:

Zusammenfassung der Kenntnisse im PDO-Betrieb von PHP-Datenobjekten

Ich hoffe, dass dieser Artikel allen beim Design ihrer PHP-Programme hilft.

Weitere Artikel zur Zusammenfassung der PDO-Betriebsfähigkeiten für PHP-Datenobjekte finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage