Cet article présente principalement la définition et l'utilisation de la classe publique PDO implémentée par PHP, et analyse la définition de la classe d'opération PDO et les techniques de requête, d'insertion et d'autres utilisations implémentées par PHP sur la base d'exemples spécifiques. Les amis dans le besoin peuvent s'y référer.
L'exemple de cet article décrit la définition et l'utilisation de la classe publique pdo implémentée par PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
db.class.php :
<?php class db extends \PDO { private static $_instance = null; protected $dbName = ''; protected $dsn; protected $dbh; public function __construct($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset='utf8') { try { $this->dsn = 'mysql:host=' . $dbHost . ';dbname=' . $dbName; $this->dbh = new \PDO($this->dsn, $dbUser, $dbPasswd); $this->dbh->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false); $this->dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $this->dbh->exec('SET character_set_connection='.$dbCharset.';SET character_set_client='.$dbCharset.';SET character_set_results='.$dbCharset); } catch (Exception $e) { $this->outputError($e->getMessage()); } } public static function getInstance($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset='utf8') { if (self::$_instance === null) { self::$_instance = new self($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset); } return self::$_instance; } public function fetchAll($sql, $params = array()) { try { $stm = $this->dbh->prepare($sql); if ($stm && $stm->execute($params)) { return $stm->fetchAll(\PDO::FETCH_ASSOC); } } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function fetchOne($sql, $params = array()) { try { $result = false; $stm = $this->dbh->prepare($sql); if ($stm && $stm->execute($params)) { $result = $stm->fetch(\PDO::FETCH_ASSOC); } return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function fetchColumn($sql, $params = array()) { $result = ''; try { $stm = $this->dbh->prepare($sql); if ($stm && $stm->execute($params)) { $result = $stm->fetchColumn(); } return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function insert($table, $params = array(), $returnLastId = true) { $_implode_field = ''; $fields = array_keys($params); $_implode_field = implode(',', $fields); $_implode_value = ''; foreach ($fields as $value) { $_implode_value .= ':'. $value.','; } $_implode_value = trim($_implode_value, ','); $sql = 'INSERT INTO ' . $table . '(' . $_implode_field . ') VALUES ('.$_implode_value.')'; try { $stm = $this->dbh->prepare($sql); $result = $stm->execute($params); if ( $returnLastId ) { $result = $this->dbh->lastInsertId(); } return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function update($table, $params = array(), $where = null) { $_implode_field = ''; $_implode_field_arr = array(); if ( empty($where) ) { return false; } $fields = array_keys($params); foreach ($fields as $key) { $_implode_field_arr[] = $key . '=' . ':'.$key; } $_implode_field = implode(',', $_implode_field_arr); $sql = 'UPDATE ' . $table . ' SET ' . $_implode_field . ' WHERE ' . $where; try { $stm = $this->dbh->prepare($sql); $result = $stm->execute($params); return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function delete($sql, $params = array()) { try { $stm = $this->dbh->prepare($sql); $result = $stm->execute($params); return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } public function exec($sql, $params = array()) { try { $stm = $this->dbh->prepare($sql); $result = $stm->execute($params); return $result; } catch (Exception $e) { $this->outputError($e->getMessage()); } } private function outputError($strErrMsg) { throw new Exception("MySQL Error: " . $strErrMsg); } public function __destruct() { $this->dbh = null; } }
Exemple :
<?php require_once './db.class.php'; $pdo = db::getInstance('127.0.0.1', 'root', '111111', 'php_cms'); $sql = "select id, title1 from cms_wz where id = :id limit 1"; $parame = array('id' => 12,); $res = $pdo->fetchOne($sql, $parame); var_dump($res); $sql = 'SELECT * FROM cms_link'; $result = $db->fetchAll($sql); print_r($result); //查询记录数量 $sql = 'SELECT COUNT(*) FROM cms_link'; $count = $db->fetchColumn($sql); echo $count; $data = array( 'siteid' => 1, 'linktype' => 1, 'name' => 'google', 'url' => 'http://www.google.com', 'listorder' => 0, 'elite' => 0, 'passed' => 1, 'addtime' => time() ); $lastInsertId = $db->insert('cms_link', $data); echo $lastInsertId; //用 try try { $result = $pdo->insert('news', $essay); } catch (Exception $e) { error_log($e->getMessage()); error_log($e->getMessage() . ' in ' . __FILE__ . ' on line ' . __LINE__); saveLog('url文章 : ' . $essay['link'] . ' 数据插入失败<br>'); continue; } $data = array( 'siteid' => 1, 'linktype' => 1, 'name' => 'google', 'url' => 'http://www.google.com', 'listorder' => 0, 'elite' => 0, 'passed' => 1, 'addtime' => time() ); $db->insert('cms_link', $data); $sql = 'DELETE FROM cms_link WHERE linkid=4'; $result = $db->delete($sql); var_dump($result);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!