PHPで実装されたmysqlデータベース操作クラス
データベース操作クラスは 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);
実行結果を返します

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
