php pdoカプセル化クラスコード(トランザクションをサポート)
リリース: 2016-07-25 08:51:50
-
- /**
- * PDO データベース
- * @copyright By GOOGLE
- */
- class pdo_db
- {
- /**
- * PDO インスタンス
- * @var PDO
- */
- protected $_db;
- /**
- * PDO 準備済みステートメント
- * @var PDOStatement
- */
- protected $_stmt ;
- /**
- * 最後の SQL ステートメント
- * @var string
- */
- protected $_sql;
- /**
- * 構成情報 $config=array('dsn'=>xxx,'name'=>xxx,'password'=>xxx,'option'=>xxx)
- * @var array
- */
- protected $_config;
- /**
- * コンストラクター
- * @param array $config
- */
- public function __construct($config)
- {
- $ this->_config = $config;
- }
- /**
- * データベースに接続します
- * @return void
- */
- public function connect()
- {
- $this->_db = new PDO($this->_config['dsn'] , $this->_config['name'], $this->_config['password'], $this->_config['option']);
- //默认握结果序列化成stdClass
- // $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
- $this->_db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
- //自己写代捕获Exception
- $this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
- }
- /**
- * 切断
- * @return void
- */
- public function disConnect()
- {
- $this-> ;_db = null;
- $this->_stmt = null;
- }
- /**
- * SQLを実行し、新しく追加されたIDを返します
- * @param string $statement
- * @return string
- */
- public function exec($statement)
- {
- if ($this->gt;_db->exec( $statement)){
- $this->_sql = $statement;
- return $this->lastId();
- }
- $this->errorMessage();
- }
- /**
- * クエリ SQL
- * @param string $statement
- * @return pdo_db
- */
- パブリック関数クエリ($statement)
- {
- $res = $this->_db->query($statement);
- if ($res){
- $this->_stmt = $res;
- $this ->_sql = $statement;
- return $this;
- }
- $this->errorMessage();
- }
- /**
- * データを一度シリアル化します
- * @returnmixed
- */
- public function fetchOne()
- {
- return $this-> ;_stmt->fetch();
- }
- /**
- * すべてのデータをシリアル化します
- * @return array
- */
- public function fetchAll()
- {
- return $this->_stmt->fetchAll();
- }
- /**
- * 最後に追加された ID
- * @return string
- */
- public function lastId()
- {
- return $this->_db->lastInsertId();
- }
- /**
- * 影響を受ける行数
- * @return int
- */
- public functionaffectRows()
- {
- return $this ->_stmt->rowCount();
- }
- /**
- * プリペアドステートメント
- * @param string $statement
- * @return pdo_db
- */
- public function prepare($statement)
- {
- $res = $this->_db->prepare($statement) ;
- if ($res){
- $this->stmt = $res;
- $this->gt;_sql = $statement;
- return $this;
- }
- $this->errorMessage();
- }
- /**
- * バインドデータ
- * @param array $array
- * @return pdo_db
- */
- public function bindingArray($array)
- {
- foreach ($array as $k => $v){
- if (is_array($v)){
- //array の有能な構造 array('value'=>xxx,'type'=>PDO::PARAM_XXX)
- $this->_stmt- >bindValue($k + 1, $v['value'], $v['type']);
- } else{
- $this->_stmt->bindValue($k + 1, $v, PDO::PARAM_STR);
- }
- }
- return $this;
- }
- /**
- * 準備されたステートメントを実行します
- * @return bool
- */
- public functionexecute()
- {
- if ($this->_stmt->execute()) {
- return true;
- }
- $this->errorMessage();
- }
- /**
- * トランザクションを開始します
- * @return bool
- */
- public function beginTransaction()
- {
- return $this->_db->beginTransaction() ;
- }
- /**
- * トランザクションを実行します
- * @return bool
- */
- public function commitTransaction()
- {
- return $this->_db->commit();
- }
- /**
- * ロールバックトランザクション
- * @return bool
- */
- public function rollbackTransaction ()
- {
- return $this->_db->rollBack();
- }
- /**
- * エラーをスローします
- * @throws エラー
- * @return void
- */
- public function errorMessage()
- {
- return;
- $msg = $this-> _db->errorInfo();
- throw new Exception('数据库错误:' . $msg[2]);
- }
- //-------- --
- /**
- * シングルトン インスタンス
- * @var pdo_db
- */
- protected static $_instance;
- /**
- * デフォルトデータベース
- * @static
- * @param array $config
- * @return pdo_db
- */
- public static function インスタンス($config)
- {
- if (!self::$_instanceinstanceof pdo_db){
- self::$_instance = new pdo_db($config);
- self::$_instance->connect();
- }
- return self::$_instance;
- }
- //-------- --------------
- /**
- * PDO でサポートされているデータベースを取得します
- * @static
- * @return array
- */
- パブリック静的関数 getSupportDriver(){
- return PDO::getAvailableDrivers();
- }
- /**
- * データベースのバージョン情報を取得します
- * @return array
- */
- public function getDriverVersion(){
- $name = $this->_db->getAttribute(PDO::ATTR_DRIVER_NAME);
- return array($name=>$this->) ;_db->getAttribute(PDO::ATTR_CLIENT_VERSION));
- }
- }
复制代
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31