PHPで実装されたmysqlデータベース操作クラス

WBOY
リリース: 2016-06-23 13:09:49
オリジナル
1159 人が閲覧しました

データベース操作クラスは Jiyi Blog によって提供されています

Db クラスの紹介

1. シングルトン設計パターンを採用 このクラスは、このクラスのインスタンス オブジェクトの独自の実装を保証するためにシングルトン設計パターンを採用しています

public static $_instance; //静态属性,存储实例对象
ログイン後にコピー
/** * 私有化构造函数 这是构造单例设计模式必须的一步 */private function __construct($config=''){    $this->config = $this->parseConfig($config);}
ログイン後にコピー
/** * 实例化对象 采用静态公共方法 */public static function Instance(){    if(self::$_instance instanceof self){        return self::$_instance;    }    self::$_instance = new self;    return self::$_instance;}
ログイン後にコピー

2.機能紹介

まず、このクラスはマスター/スレーブレプリケーションデータベースの接続をサポートし、1つのマスターと複数のスレーブモードのデータベースをサポートします

スレッドが接続しているスレーブサーバーがダウンした場合、プログラムは自動的に他の通常のスレーブに再接続します

次に、新しいデータがデータテーブルに追加されるとき、このクラスは一度に複数のデータを追加することをサポートしており、これらの複数のデータは異なるテーブルにすることができます

複数のデータを指定できます。 addMore 関数の 2 番目のパラメータによるテーブル挿入、その実装コア コードは次のとおりです

/** * 一次性插入多条数据,支持不同表的插入 * 当使用多表插入功能时需要在第二个参数中指定 $options['multitable'] = true * 并且$data的格式为 * array( * '表名1'=>array(array(),array()), * '表名2'=>array(array(),array()) * ) * @param array $data * @param array $options * @return boolean */ public function addMore($data = array(),$options = array()){       if(isset($options['table']))           $this->table($options['table']);       if(!is_array($data)) return false;       /* * 开启事务处理多条语句 */       $this->startTransaction();       foreach($data as $key=>$val){            //查看是否是多表插入            if(isset($options['multitable'])&&$options['multitable']){                /* * 多表插入,则$key为表名,$val为要插入的数据 * 使用递归的方式再次对多条数据进行插入 */                $res = $this->addMore($val,array('table'=>$key));            }else{                //单表插入                $res = $this->add($val);            }            if(!$res){                  //如果有一条数据插入失败,则回滚事务,撤销所有的操作                $this->rollback();                return false;            }       }       //如果所有插入操作无误,则提交事务       $this->commit();       return true;}
ログイン後にコピー

複数の挿入データの 1 つが挿入に失敗した場合、他の挿入データはトランザクション ロールバックによってキャンセルできます

3. その他は通常の追加、削除、変更、クエリをサポートします

以下に使用する関数の使用法を紹介します

1) オブジェクトをインスタンス化します

このクラスを使用するには、最初にクラスのオブジェクトをインスタンス化する必要があります

$obj = Db::Instance();
ログイン後にコピー

2) data

データの検索に使用する関数は select() と find() の 2 つの関数

複数のデータを検索する select() 関数

使用例

$res = $obj->field('id,name')->where('id > 10')->select();
ログイン後にコピー

戻り値:

false を返すのに失敗、検索は成功複数のデータを返す

array(    array('id'=>11,'name'=>'迹忆博客1'),    array('id'=>12,'name'=>'迹忆博客2'),)
ログイン後にコピー

find() は1つのデータを返す

$res = $obj->field('id,name')->where('id=10')->find()
ログイン後にコピー

戻り値

検索が失敗した場合は false を返す 検索が成功した場合は 1 つのデータを返す

array('id'=>10,'name'=>'迹忆博客')
ログイン後にコピー

3) データを追加する

データを追加するには、add($data,$options) と addMore($data,$options) の 2 つの関数があります

add($data.$options)
ログイン後にコピー

$data 追加するデータ

データ形式

array('id'=>13,'name'=>'onmpw')
ログイン後にコピー

$options オプションのパラメータ

テーブル名形式はarray('table'=>'テーブル名')で指定可能 ここで指定したテーブル名が最も優先されます

戻り値

挿入が失敗した場合はfalseを返します 挿入が失敗した場合は、挿入された項目の数を返します。成功しました

addMore($data,$options)
ログイン後にコピー

$options オプションでタイトルを挿入するか単一のテーブルを挿入するかを指定できます

'multitable'=>true   多表插入  如果设定此项则默认是单表插入  多表插入$data的数据格式$data = array(   'tablename1'=>array(     array('id'=>20,'name'=>'迹忆博客1'),    array('id'=>21,'name'=>'迹忆博客2'),    array('id'=>22,'name'=>'迹忆博客3')   ),   'tablename2'=>array(     array('id'=>20,'name'=>'迹忆博客1','url'=>'www.onmpw.com'),    array('id'=>21,'name'=>'迹忆博客2','url'=>'www.onmpw.com'),    array('id'=>22,'name'=>'迹忆博客3','url'=>'www.onmpw.com')   ))
ログイン後にコピー
'multitable'=>false / 不设定此项 单表插入 $data的数据格式为    $data = array(    array('id'=>31,'name'=>'迹忆博客1','url'=>'www.onmpw.com'),    array('id'=>32,'name'=>'迹忆博客2','url'=>'www.onmpw.com'),    array('id'=>33,'name'=>'迹忆博客3','url'=>'www.onmpw.com'),    )
ログイン後にコピー

'table'=>'table name' は、データが挿入されるデータ テーブルの名前を指定します。この項目は単一のテーブルに挿入する場合に有効で、他のテーブル名の指定方法よりも優先されます

戻り値

挿入が失敗した場合はFalseが返され、挿入が成功した場合は挿入されたアイテムの数が返されます

4) update($data, $options)を変更する

データを変更する関数

$data 変更するデータ、形式は

array('name'=>'onmpw','url'=>'http://onmpw.com');
ログイン後にコピー
です

$optionsはテーブル名を指定できます

'table'=>'テーブル名'

戻り値

更新に失敗した場合はfalseを返す 正常に更新された番号を返す

5) 削除delete($options)

$optionsでテーブル名を指定可能

'table'=>'テーブル名'このタイプの指定されたテーブル名が最も優先されます

$res = $obj->table('repl')->where('id=10')->delete(); //删除repl表下id=10的记录$res = $obj->table('repl')->where('id=13')->delete(array('table'=>'test'));  //删除test表下id=13的记录
ログイン後にコピー

$res = $obj->where('id=13')->delete(array('table'=>'test'))
ログイン後にコピー
と同等です

戻り値

削除が失敗した場合は false を返し、削除が成功した場合は削除されたレコードの数を返します

6) table($str ) 関数はテーブル名を指定します

$obj->table('test')  //指定当前操作的表为test表
ログイン後にコピー

戻り値は現在のオブジェクトオブジェクトです

7) where($where) は場所条件を指定します

$where は文字列または配列にすることができます

string

$obj->table('test')->where("name='迹忆博客',url='www.onmpw.com'");
ログイン後にコピー

array

$obj->table('test')->where(array('name'=>'迹忆博客','url'=>'www.onmpw.com'))
ログイン後にコピー

戻り値は現在のオブジェクト object です

8) field($field) はクエリのフィールドを指定します 名前

$obj->table('test')->field('name,url')->select();
ログイン後にコピー

クエリ時に field() 関数を使用してフィールドを指定しない場合、テーブルのすべてのフィールドがデフォルトでクエリされる

戻り値は現在のオブジェクト object です

9) orderby($str) は並べ替えるフィールドを指定します

$obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id DESC')->select();
ログイン後にコピー

id の降順に並べます

$obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id')->select();
ログイン後にコピー

降順または昇順

戻り値は現在のオブジェクト object

10) limit($limit)

$limt は文字列または配列にすることができます

array

array(page,listrows)
ログイン後にコピー

page は現在のページ番号を指定します listrows はレコードの数を指定します各ページから取り出す

String

10,12

10は10番目のレコードから開始することを意味し、12は取り出したレコードの数を意味します

$res = $obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id DESC')->limit('10,12')->select()
ログイン後にコピー

戻り値は現在のオブジェクト object

11) sql( $sql) 指​​定された SQL ステートメントを実行します

$sql = "select name,url from test where name='迹忆博客'";$res = $obj->sql($sql);
ログイン後にコピー

実行結果を返します

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