素晴らしい 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.')';
}
}

ホット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)

ホットトピック









discuz データベース エラーの解決策は次のとおりです: 1. データベース構成を確認します; 2. データベース サーバーが実行されていることを確認します; 3. データベース テーブルのステータスを確認します; 4. データをバックアップします; 5. キャッシュをクリアします; 6. Discuz を再インストールします; 7. サーバー リソースを確認します。 ; 8. Discuz 公式サポートに連絡します。 Discuz データベース エラーを解決するには、複数の側面から始めて、徐々に問題の原因を調査し、対応する措置を講じて修復する必要があります。

IntelArrowLake は、LunarLake と同じプロセッサ アーキテクチャに基づいていると予想されており、つまり、Intel の新しい Lion Cove パフォーマンス コアが経済的な Skymont 効率コアと組み合わされることになります。

C 言語における return の使い方は、 1. 戻り値の型が void の関数については、return 文を使用して関数の実行を早期に終了することができます; 2. 戻り値の型が void ではない関数については、 return ステートメントは、関数の実行を終了するためのものです。結果は呼び出し元に返されます。 3. 関数の実行を早期に終了します。関数内で return ステートメントを使用して、関数の実行を早期に終了することもできます。関数が値を返さない場合。

ソースコード: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#出力 上記のコードの出力は、単純に次のように結論付けることができます:finally の前に return が実行されます。バイトコード レベルで何が起こるかを見てみましょう。以下は、case1 メソッドのバイトコードの一部をインターセプトし、ソース コードを比較して、各命令の意味に注釈を付けます。

golang を使用した SelectChannelsGo 同時プログラミングの非同期処理方法 はじめに: 同時プログラミングは、アプリケーションのパフォーマンスと応答性を効果的に向上させることができる、現代のソフトウェア開発における重要な領域です。 Go 言語では、Channel と Select ステートメントを使用して同時プログラミングを簡単かつ効率的に実装できます。この記事では、SelectChannelsGo 同時プログラミングの非同期処理メソッドに golang を使用する方法を紹介し、具体的な方法を提供します。

jquery で select 要素を非表示にする方法: 1. hide() メソッド。jQuery ライブラリを HTML ページに導入します。さまざまなセレクターを使用して select 要素を非表示にできます。ID セレクターは、selectId を選択した select 要素の ID に置き換えます。実際に使用する; 2. css() メソッド、ID セレクターを使用して非表示にする必要がある select 要素を選択し、css() メソッドを使用して表示属性を none に設定し、selectId を select 要素の ID に置き換えます。

この記事では、PowerQuery で複数の列をドラッグ アンド ドロップで並べ替える方法を説明します。さまざまなソースからデータをインポートする場合、列が希望の順序にならないことがよくあります。列の順序を変更すると、分析やレポートのニーズに合った論理的な順序で列を配置できるだけでなく、データの読みやすさが向上し、フィルタリング、並べ替え、計算の実行などのタスクが高速化されます。 Excelで複数の列を並べ替えるにはどうすればよいですか? Excel で列を再配置する方法はたくさんあります。列ヘッダーを選択し、目的の場所にドラッグするだけです。ただし、多くの列を含む大きなテーブルを扱う場合、このアプローチは面倒になる可能性があります。列をより効率的に再配置するには、拡張されたクエリ エディターを使用できます。クエリの強化

jQuery は、DOM 操作、イベント処理、アニメーション効果などを簡素化するために使用できる人気のある JavaScript ライブラリです。 Web 開発では、選択した要素のイベント バインディングを変更する必要がある状況によく遭遇します。この記事では、jQuery を使用して選択要素変更イベントをバインドする方法を紹介し、具体的なコード例を示します。まず、ラベルを使用してオプションを含むドロップダウン メニューを作成する必要があります。
