1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php
/* ------------------------------------------------------------------ #
 *      MySQLiの基本処理クラス :手続き型  [UTF-8]ベース
 *      内容 :PHPプログラミング講義用「MySQLiクラスのlocalhost設定」
 *          ---------------------------
 *   作者 :Yoshi of CXMedia Inc. - copyright all rights reserved.
 *   作成 :2016.06.28
 *   変更 :
 * ------------------------------------------------------------------ */
class MySQLi_c{
    
/* ------------------
     * -- プロパティ --
     * ------------------ */
    
public $DBconnect;  // DB接続のリソースID
    
public $DBhost;     // ホスト名
    
public $DBuser;     // ユーザID
    
public $DBpwd;      // パスワード
    
public $DBname;     // データベース名
    
public $DBtblm;     // テーブル名
    
public $DBrows;     // クエリの結果内容
    
public $DBerror;    // DBエラー内容
    
public $DBsql;      // SQL文の保存
    
    
public $DBfields    = array(); // テーブルのフィールド名
    
public $DBfieldType = array(); // テーブルのフィールド・データ型
    
public $DBfieldDaft = array(); // テーブルのフィールド・デフォルト値
    
public $DBkey_fld   "";
    
    
/* -----------------------
     *  -- コンストラクタ --
     * ----------------------- */
    
function __construct($define){
        
// 接続条件の初期設定
        
$this->DBhost = isset($define['DBhost'])? $define['DBhost'] : 'localhost';  // ホスト名
        
$this->DBuser = isset($define['DBuser'])? $define['DBuser'] : 'root';       // ユーザー名
        
$this->DBpwd  = isset($define['DBpwd'])?  $define['DBpwd']  : 'admin';      // パスワード
        
$this->DBname = isset($define['DBname'])? $define['DBname'] : '';           // データベース名
        
$this->DBtblm = isset($define['DBtblm'])? $define['DBtblm'] : '';           // DBテーブル名
        
$this->DBrows 0;   // クエリ結果のレコード
        
        // MYSQLへ接続
        
$this->DBconnect mysqli_connect($this->DBhost$this->DBuser$this->DBpwd$this->DBname);
        
// DB接続のエラー判断
        
if ( $wk_err mysqli_connect_errno()){
            die(
"MYSQLの接続に失敗しました。:{$wk_err}");
        }
        
// DBのテーブル名によるフィールド名、型、値のプロパティ設定
        
if( $this->DBtblm ){
            
self::set_tablefields($this->DBtblm);
        }
    }

    
/* --------------------
     *  -- デストラクタ --
     * -------------------- */
    
function __destruct(){
        
self::close();
    }

    
/* --------------------------------------#
     *   主テーブル、フィールド名の設定
     * ------------------------------------- */
     
function set_tablefields($table null){
         
// $tableの引数が設定されていた場合は、メインのテーブルセットをする
         
if($table){
             
$this->DBtblm $table;
         }
         
// 指定したテーブルのフィールド型、デフォルトをセット
         
if($this->DBtblm){
            
$this->DBfields = array();
            
// フィールド属性取得のsql文
            
$sql 'show columns from '.$this->DBtblm;
            
// クエリの実行
            
$this->query($sql);
            
// クエリ結果の取得(繰り返し)
            
while ($item $this->fetch_assoc()){
                
$this->DBfields[]                    = $item['Field'];
                
$this->DBfieldType$item['Field'] ] = $item['Type'];
                
$this->DBfieldDaft$item['Field'] ] = $item['Default'];
                
// キーフィールドが'PRI'であるとき、キーフィールド名としてセット
                
if($item['Key'] == 'PRI'){$this->DBkey_fld $item['Field'];}
            }
            return 
true;
        } else {
            return 
false;
        }
    }
    
    
/* ------------------
     *   -- メソッド --
     * ------------------ */

    /* ---------------------------#
     *  SQLクエリの処理(query)
     * -------------------------- */
    
function query($sql){
        
// sql文の保存
        
$this->DBsql  $sql;
        
        
$this->DBrows mysqli_query($this->DBconnect,$sql);
        if (!
$this->DBrows){
             
$this->DBerror "MySQLでエラーが発生しました。<br><b>{$sql}</b><br>" .$this->errors();
             return 
false;
        }
        return 
$this->DBrows;
    }
    
    
/* ---------------------------------#
     *  検索結果を配列取得(fetch_array)
     * -------------------------------- */
    
function fetch(){
        if(!
$this->DBrows){
            
$this->DBerror "MySQLエラー:レコードリソースIDなし。<br>" .$this->errors();
            return 
false;
        }
        return 
mysqli_fetch_array($this->DBrows);
    }
    
    
/* -------------------------------------#
     *  検索結果を連想配列取得(fetch_assoc)
     * ------------------------------------ */
    
function fetch_assoc(){
        if(!
$this->DBrows){
            
$this->DBerror "MySQLエラー:レコードリソースIDなし。<br>" .$this->errors();
            return 
false;
        }
        return 
mysqli_fetch_assoc($this->DBrows);
    }
    
    
/* ------------------------------#
     *  ROWの件数カウント(num_rows)
     * ----------------------------- */
    
function rowcount(){
        return 
mysqli_num_rows($this->DBrows);
    }
    
    
/* ---------------------------#
     *   MySQLをクローズ(close)
     * --------------------------- */
    /* 持続的でない MySQL接続や結果セットは、PHPスクリプトの実行が終了する時点で自動的に破棄され、オープン接続のクローズ、
     * 結果セット開放は、必須でないが、DBクローズは、PHPやMySQLにリソースを返し、パフォーマンスの向上が図れる */
    
public function close(){
        
// DBの接続状態の判断
        
if(isset($this->DBconnect) && $this->DBconnect){
            
$wk_jdg mysqli_close($this->DBconnect);
            
// 接続リソースのクリア
            
$this->DBconnect '';
            return 
$wk_jdg;
        }
        return 
false;
    }
    
    
/* ----------------------------------------#
     *        エラーメッセージ
     *  接続時:(connect_errno,connect_error)
     *  接続後:(errno,error)
     * --------------------------------------- */
    
function errors(){
        if( 
$this->DBconnect && mysqli_connect_errno($this->DBconnect) ){
            return 
mysqli_connect_errno($this->DBconnect).": ".mysqli_connect_error($this->DBconnect);
        }
        elseif( 
$this->DBconnect && mysqli_errno($this->DBconnect) ){
            return 
mysqli_errno($this->DBconnect).": ".mysqli_error($this->DBconnect);
        }
        else{
            return 
'MySQL ERROR:';
        }
    }
}
?>