検索
ホームページphp教程php手册素晴らしい MySQL クラス

CRUD、トランザクション、ツリー再帰クエリ、ページングなどが含まれます。すべてのパラメータがエスケープされており、インジェクションの問題がありません。

/*

* Anthony.chen

※2010年予約

*/

クラス DB {

// クエリの種類

const SELECT = 1;

const INSERT = 2;

const UPDATE = 3;

const DELETE = 4;

const T = 't';

const F = 'f';

/*

* 複数のデータを返すサポート;

*/

パブリック静的関数 insert_table($table_name,$data,$return_id='id',$db='default'){

if (!is_array($data)){

return false;

}

if (is_null($return_id)){

Self::query(self::SELECT,self::insert($table_name,array_keys($data))->values(array_values($data)))->execute($db);

true を返します;

}

if (is_string($return_id)){

$id = self::query(self::SELECT,self::insert($table_name,array_keys($data))->values(array_values($data))." returns ".$return_id)- >実行($db)->get($return_id);

$id を返す;

}else{

if (is_array($return_id)){

$ids = implode(',',$return_id);

$r_ids = self::query(self::SELECT,self::insert($table_name,array_keys($data))->values(array_values($data))." returns ".$ids)- >実行($db)->現在();

$r_ids を返す;

}

}

return false;

}

パブリック静的関数 update_table($table_name,$id,$data,$id_name='id',$db='default'){

if (!is_array($data)){

return false;

}

return self::update($table_name)->set($data)->where($id_name ,'=',$id)->execute($db);

}

public static function quote($s,$db='default'){

if(!is_array($s)){

return Database::instance($db)->quote($s);

}else{ //配列を引用符で囲んで内部分解します

$_qs = array();

foreach ($s として $ele){

$_qs[] = self::quote($ele,$db);

}

$_quoteString = implode(',',$_qs);

$_quoteString を返す;

}

}

public static functionscape($s,$db='default'){

return Database::instance($db)->escape($s);

}

public static function quote_table($s,$db='default'){

return Database::instance($db)->quote_table($s);

}

public static function getConnection($db = 'default'){

return Database::instance($db)->getConnection();

}

public static function getChildren($table,$returnSql = false ,$pid= '0',$idname='id',$pidname='pid' ,$db='default'){

$_sql = 'select * from '.$table.'ここで '.$pidname.'='.self::escape($pid,$db).

" と $idname ".DB::escape($pid,$db);

if($returnSql){

return $_sql;

}

$_res = self::query(self::SELECT,$_sql)->execute($db)->as_array();

if($_res){

return $_res;

}else{

false を返す;

}

}

/*

*

*/

public static function getTree($tableName,$returnSql=false,$startWith='0',$idCol='id',$pidCol='pid', $orderCol='id', $maxDepth=0,$レベル = 0,$delimiter = ';',$db='デフォルト'){

$_funcParas = array();

$_funcParas[] = self::quote($tableName,$db); //TableView

$_funcParas[] = self::quote($idCol,$db); //ID列

$_funcParas[] = self::quote($pidCol,$db); //親ID列

$_funcParas[] = self::quote($orderCol,$db); //ASC によるデフォルトの順序

$_funcParas[] = self::quote($startWith,$db); //NODE を開始

$_funcParas[] = self::quote($maxDepth,$db); // トラバース深度の開始

$_funcParas[] = self::quote($delimiter,$db); //区切り文字、デフォルト ';'

$_sql = 'select * from connectby('

.implode(',',$_funcParas).')'

。 as t(id int, pid int, level int, ブランチテキスト, pos int)';

if($level > 0){

$_sql .= ' where level >='.self::quote($level);

}

if($returnSql) return $_sql;

$_res = self::query(self::SELECT,$_sql,true)->execute($db)->as_array();

if($_res){

return $_res;

}else{

false を返す;

}

}

public static function begin($db='default'){

DB::query(Database::UPDATE, "BEGIN")->execute($db);

}

public static function commit($db='default'){

DB::query(Database::UPDATE, "COMMIT")->execute($db);

}

public static function rollback($db='default'){

DB::query(Database::UPDATE, "ROLLBACK")->execute($db);

}

/**

* 指定されたタイプの新しい [Database_Query] を作成します。

*

* // 新しい SELECT クエリを作成します

* $query = DB::query(Database::SELECT, 'SELECT * FROM users');

*

* // 新しい DELETE クエリを作成します

* $query = DB::query(Database::DELETE, 'DELETE FROM users WHERE id = 5');

*

* 型を指定すると返される結果が変わります。

を使用する場合

* `Database::SELECT`、[Database_Query_Result] が返されます。

* `Database::INSERT` クエリは挿入 ID と行数を返します。

* 他のすべてのクエリでは、影響を受ける行の数が返されます。

*

* @param 整数型: Database::SELECT、Database::UPDATE など

* @param string SQL ステートメント

* @return Database_Query

  */

public static function query($type, $sql,$as_object = false)

{

return new Database_Query($type, $sql,$as_object);

}

/**

* 新しい[Database_Query_Builder_Select]を作成します。各引数は

となります。

* 列として扱われます。 `foo AS bar` エイリアスを生成するには、配列を使用します。

*

* // ID、ユーザー名を選択します

* $query = DB::select('id', 'username');

*

* // SELECT id AS user_id

* $query = DB::select(array('id', 'user_id'));

*

* @param 混合列名または配列($column, $alias) またはオブジェクト

* @param ...

* @return Database_Query_Builder_Select

  */

public static function select($columns = NULL)

{

return new Database_Query_Builder_Select(func_get_args());

}

/**

* 列の配列から新しい [Database_Query_Builder_Select] を作成します。

*

* // ID、ユーザー名を選択します

* $query = DB::select_array(array('id', 'username'));

*

* @param 選択する配列列

* @return Database_Query_Builder_Select

*/

public static function select_array(array $columns = NULL)

{

return new Database_Query_Builder_Select($columns);

}

/**

* 新しい [Database_Query_Builder_Insert] を作成します。

*

* // INSERT INTO users (id, username)

* $query = DB::insert('users', array('id', 'username'));

*

*

に挿入する @param 文字列テーブル

* @param 列名の配列リスト、array($column, $alias)、object

* @return Database_Query_Builder_Insert

  */

public static function insert($table = NULL, array $columns = NULL)

{

return new Database_Query_Builder_Insert($table, $columns);

}

/**

* 新しい[Database_Query_Builder_Update]を作成します。

*

* // ユーザーを更新します

* $query = DB::update('users');

*

* 更新する @param 文字列テーブル

* @return Database_Query_Builder_Update

  */

public static function update($table = NULL)

{

return new Database_Query_Builder_Update($table);

}

/**

* 新しい [Database_Query_Builder_Delete] を作成します。

*

* // ユーザーから削除

* $query = DB::delete('users');

*

* 削除する @param 文字列テーブル

* @return Database_Query_Builder_Delete

  */

public static function delete($table = NULL)

{

return new Database_Query_Builder_Delete($table);

}

/**

* エスケープされていない新しい [Database_Expression] を作成します。式

* は、クエリ ビルダー内で SQL 関数を使用する唯一の方法です。

*

* $expression = DB::expr('COUNT(users.id)');

*

* @param 文字列式

* @return Database_Expression

*/

public static function expr($string){

return new Database_Expression($string);

}

/*

* ページ分割されたページを取得しています

*/

public static function getPage($_sql,&$page,$orderBy ='updated desc', $dataPro='data',$pagePro = 'pagination',

$config = NULL,$db = 'default',$as_object= true){

$_csql = 'select count(1) as c from ('.$_sql.') st';

$_c = DB::query(DB::SELECT,$_csql)->execute($db)->get('c');

if($config){

$config['total_items'] = $_c;

$_pagination = new Pagination($config);

}else{

$config = array();

$config['total_items'] = $_c;

$_pagination = new Pagination($config);

}

$_sql .= ' order by '.$orderBy;

if($_pagination->offset){

$_sql .= ' offset '.$_pagination->offset;

}

$_sql .= '制限'.$_pagination->items_per_page;

$_data = DB::query(DB::SELECT,$_sql,$as_object)->execute($db)->as_array();

if(!$_data){

$page->{$dataPro} = false;

$page->{$pagePro} = false;

false を返す;

}

$page->{$dataPro} = $_data;

$page->{$pagePro} = $_pagination;

true を返します;

}

/*

* すべてのロールを取得

* スタートを制御するレベル

*/

public static function getRoleTreeSql($role_id,$quote = false,$role_table,$level=0,$db='default'){

$_sql = 'select id from ('.self::getTree($role_table,true,$role_id,'id','pid','id',

0, //Max Depth

$level, //レベル

';',$db).') utree';

if(!$quote) return $_sql;

else return '('.$_sql.')';

}

/*

* オブジェクト認可に関するサブクエリを返します

* 子ロールオブジェクトと所有オブジェクト

* 親コントロール

*/

public static function getCURTreeSql($role_id,$user_id,$role_table,$quote = true,

$role='role_id',$owner = 'owner_id' ,$db='default'){

$_sql = ' '.$role.' '.self::getRoleTreeSql($role_id,true,$role_table,

) で

1, //レベルは 1 から始まります

$db)。 ' または '.$owner.'='.DB::quote($user_id);

if(!$quote) return $_sql;

else return '('.$_sql.')';

}

}



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター