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:';
}
}
}
?>