Maison > php教程 > PHP开发 > Résumé des compétences opérationnelles PDO d'objets de données PHP

Résumé des compétences opérationnelles PDO d'objets de données PHP

高洛峰
Libérer: 2016-12-28 17:09:24
original
1557 Les gens l'ont consulté

Les exemples de cet article décrivent les techniques de fonctionnement des objets de données PHP PDO. Partagez-le avec tout le monde pour votre référence, comme suit :

L'extension PHP Data Object (PDO) définit une interface légère et cohérente permettant à PHP d'accéder à la base de données.

<?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();
 }
?>
Copier après la connexion

Transaction d'opération PDO

//开启事务
beginTransacition()
//回滚
rollback()
//提交
commit()
//判断是否处于事务之中
inTransaction()
Copier après la connexion

Renvoyer l'ID de la dernière ligne insérée

PDO::lastInsertID()
Copier après la connexion

exécution exec()

avec requête () En comparaison, exec() renvoie le nombre de lignes affectées

$sql = "insert into table values(&#39;$val&#39;)";
if(false===$pdo->exec($sql)){
 echo &#39;执行失败&#39;;
}
Copier après la connexion

PDO implémente la pré-compilation

fait référence à une syntaxe d'exécution de SQL qui précompile la structure de sql

Si plusieurs SQL avec la même structure sont exécutés, les résultats intermédiaires de la compilation (arbre de syntaxe) doivent également être cohérents. Par conséquent, la même structure peut être compilée uniformément et exécutée avec des données différentes à chaque fois.

Compiler une structure unifiée

$pdoStatement = $pdo->prepare(sql结构)
Copier après la connexion

Lier les données aux résultats de compilation intermédiaires

$pdoStatement ->bindValue()
Copier après la connexion

Exécution

$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);
Copier après la connexion

La pré-compilation est meilleure Ceci efficacement empêche l'injection SQL car les données de l'utilisateur ne sont pas nécessaires pour participer à la pré-compilation, donc la structure est corrigée lors de la compilation, donc les données n'affectent pas la structure SQL.

$pdo->query() et $pdo->execute() Si vous devez empêcher l'injection SQL, vous pouvez utiliser $pdo->quote() (sa fonction est d'abord d'échapper et puis ajoutez des guillemets)

Méthodes courantes de PDOstatement :

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

application 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));
?>
Copier après la connexion

Le diagramme des effets d'exécution est le suivant :

Résumé des compétences opérationnelles PDO dobjets de données PHP

J'espère que cet article aidera tout le monde avec ses programmes PHP. La conception aide.

Pour plus d'articles liés au résumé des compétences opérationnelles des objets de données PHP PDO, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal