【DB操作】mysqli操作クラス

プログラムキーワード

MyDB

define('DB接続情報', array('host'     =>'******',
                          'username' =>'******',
                          'passwd'   =>'******', 
                          'dbname'   =>'******', 
                          'port'     =>'******')
);

class MyDB
{
    public $mysqli; // mysqliオブジェクト
    public $mode;   // 戻り値の形式:"json" or "array"(連想配列)
    public $count;  // SQLによって取得した行数 or 影響した行数

    // コンストラクタ
    function __construct($mode = "array") 
    {
        $this->mode = $mode;

        // DB接続
        $this->mysqli = new mysqli(DB接続情報['host'], DB接続情報['username'], DB接続情報['passwd'], DB接続情報['dbname']);
        if ($this->mysqli->connect_error) {
            echo $this->mysqli->connect_error;
            exit;
        } else {
            $this->mysqli->set_charset("utf8mb4");
        }
    }

    // デストラクタ
    function __destruct()
    {
        // DB接続を閉じる
        $this->mysqli->close();
    }

    function begin_tran(){
        $this->mysqli->begin_transaction();
    }

    function commit(){
        $this->mysqli->commit();        
    }

    function rollback(){
        $this->mysqli->rollback();        
    }
    function close(){
        $this->__destruct();     
    }

    // SQL実行(SELECT/INSERT/UPDATE/DELETE に対応)
    function query($sql)
    {
        // SQL実行
        $result = $this->mysqli->query($sql);
        // エラー
        if ($result === FALSE) {
            // エラー内容
            $error = $this->mysqli->errno.": ".$this->mysqli->error;
            // 戻り値
            $rtn = array(
                'status' => FALSE,
                'count'  => 0,
                'result' => "",
                'error'  => $error
            );
            if($this->mode == "array")
                return $rtn;
            else
                return json_encode($rtn); // JSON形式で返す(デフォルト)
        }

        // SELECT文以外
        if($result === TRUE) {
            // 影響のあった行数を格納
            $this->count = $this->mysqli->affected_rows;
            // 戻り値
            $rtn = array(
                'status' => TRUE,
                'count'  => $this->count,
                'result' => "",
                'error'  => ""
            );
            if($this->mode == "array")
                return $rtn;
            else
                return json_encode($rtn); // JSON形式で返す(デフォルト)
        } 
        // SELECT文
        else {
            // SELECTした行数を格納
            $this->count = $result->num_rows;
            // 連想配列に格納
            $data = array();
            while ($row = $result->fetch_assoc()) {
                $data[] = $row;
            }
            // 結果セットを閉じる
            $result->close();
            // 戻り値
            $rtn = array(
                'status' => TRUE,
                'count'  => $this->count,
                'result' => $data,
                'error'  => ""
            );
            if($this->mode == "array")
                return $rtn;
            else
                return json_encode($rtn); // JSON形式で返す(デフォルト)
        }
    }

    // 文字列をエスケープする
    function escape($str)
    {
        return $this->mysqli->real_escape_string($str);
    }
}

主要関数

__construct($mode)

アクセス修飾子

public

戻り値型

public

連想配列の定数「DB接続情報()」を接続情報として、mysqliオブジェクトを作成する。 文字コードは「utf8mb4」としている。
名称 参照/値 既定値 省略可 備考
mode 参照型 array これなんだろ?

__destruct()

アクセス修飾子

public

戻り値型

public

mysqliオブジェクトを解放する。

begin_tran()

アクセス修飾子

public

戻り値型

public

トランザクション処理を開始する。 mysqliオブジェクトのbegin_transaction()を実行している。

commit()

アクセス修飾子

public

戻り値型

public

コミット処理を実行する。 mysqliオブジェクトのcommit()を実行している。

rollback()

アクセス修飾子

public

戻り値型

public

ロールバック処理を実行する。 mysqliオブジェクトのrollback()を実行している。

close()

アクセス修飾子

public

戻り値型

public

デストラクト処理を実行する。

query($sql)

アクセス修飾子

public

戻り値型

public

コンストラクタで作成したmysqliオブジェクトを使い、SQLを実行する。 実行結果は連想配列で返す。連想配列は以下の通り。 status:実行結果、count:実行対象件数、result:取得内容(SELECT文のみ)、error:エラー内容
名称 参照/値 既定値 省略可 備考
$sql string 参照型 SELECT/INSERT/UPDATE/DELETEのいずれかを想定。

escape($str)

アクセス修飾子

public

戻り値型

public

SQLの特殊文字をエスケープする関数です。 中身はmysqliオブジェクトのreal_escape_string()関数を実行しています。
名称 参照/値 既定値 省略可 備考
$str string 参照型 SQL文

説明

phpでデータベースを扱う際に使っているmysqliオブジェクトの操作クラス。オブジェクト指向的に言えばラッパークラスとなる(のかな?)。

使い方

$db = new MyDB(); // 上記で作成したクラスのインスタンスを作成
$db->begin_tran(); // トランザクション開始
$result = $db->query("select * from `table`"); // クエリ(SQL)の実行

// 以下クエリ実行結果を使って判定と後続処理を行う
if ($result ["status"] == false ){
	echo '失敗';
}else if($result ["count"] < 1 ){ echo '0件'; }else{ foreach($result ["result"] as $key=>$row){
		// 取得したテーブルの行単位で処理を行う場合
	}
}

最後に

これは確かネットで見つけたものを少しいじって使っていたような。 でもそのサイトのURLがわかんなかったので、いつか見つかればリンクを張らせていただきます。申し訳ありません。 やっぱネットで見つけて使わせていただいているものはURLをメモっとかないといけないと再認識させられました。