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 = 'root'; $psw ='root'; $pdo = new PDO($dsn,$user,$psw); $sql = 'select goods_prices from wsq_goods_info where goods_id=2'; // $sql = "show database"; $res = $pdo->query($sql) or var_dump($pdo->errorInfo()); // var_dump($res); $mon = $res->fetch(PDO::FETCH_ASSOC); echo $mon['goods_price']; } catch (PDOException $e) { echo $e->getMessage(); } ?>
PDO-Operationstransaktion
//开启事务 beginTransacition() //回滚 rollback() //提交 commit() //判断是否处于事务之中 inTransaction()
ID der zuletzt eingefügten Zeile zurückgeben
PDO::lastInsertID()
exec()-Ausführung
mit Abfrage () Im Vergleich dazu gibt exec() die Anzahl der betroffenen Zeilen zurück
$sql = "insert into table values('$val')"; if(false===$pdo->exec($sql)){ echo '执行失败'; }
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结构)
Daten an Zwischenkompilierungsergebnisse binden
$pdoStatement ->bindValue()
Ausführung
$pdoStatement ->execute() //$sql = "insert into table values(null,?)"; $sql = "insert into table values(null,:name)"; $stmt = $pdo->prepare($sql); //多组数据也是一编译一执行 //$stmt->bindValue(1,'bee'); $stmt->bindValue(':name','bee'); $res = $stmt->execute(); var_dump($res);
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('content-type:text/html;charset=utf-8'); 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['host'])?$config['host']:'localhost'; $this->_port = isset($config['port'])?$config['port']:'3306'; $this->_dbname = isset($config['dbname'])?$config['dbname']:''; $this->_username = isset($config['username'])?$config['username']:'root'; $this->_passward = isset($config['passward'])?$config['passward']:''; $this->_charset = isset($config['charset'])?$config['charset']:'utf8'; } 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 '失败的语句'.$sql.'<br>'; echo '错误代码'.$erro[1].'<br>'; echo '错误信息'.$erro[2].'<br>'; 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)); ?>
Das laufende Effektdiagramm sieht wie folgt aus:
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!