ホームページ > php教程 > PHP开发 > PHPデータオブジェクトPDO操作スキルのまとめ

PHPデータオブジェクトPDO操作スキルのまとめ

高洛峰
リリース: 2016-12-28 17:09:24
オリジナル
1557 人が閲覧しました

この記事の例では、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()実行

query()と比較して、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 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート