-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathf_mysql.inc
235 lines (201 loc) · 4.77 KB
/
f_mysql.inc
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<?php
/**
* DBデータクラス Mysql
*
* SELECTによって帰ってくるDBデータを取り扱います
*
* @deprecated
* @package magicweapon
* @access public
* @author Michiaki Wuzawa <[email protected]>
**/
require_once("db.inc");
class mysql_data extends db_data {
//public:
//
public function __construct($res, $conn) {
//parent::__construct();
$this->res_ = $res;
//
$this->set_affected_rows(mysql_affected_rows($conn));
//var_dump($this->affected_rows());
}
// デストラクタでmysql_free_result
public function __destruct() {
@mysql_free_result($this->res_);
//parent::__destruct();
}
/**
* SELECTの結果取得
*
* @access public
* @return boolean falseならこれ以上のデータはなし
*/
public function fetch() {
// typeでメソッドを切り分けておく
if ($this->is_fetch_type_num()) {
$m = 'mysql_fetch_row';
} else {
$m = 'mysql_fetch_assoc';
}
if (!($this->row_ = $m($this->res_))) {
return false;
}
return true;
}
/**
* fetchしたデータの取得
*
* 引数で指定した数字(0スタート)の位置のデータを取得。
* set_fetch_type_hashの場合、引数と合致する名前のデータを取得。
*
* @access public
* @param int $pos 取得したいデータの位置、またはhash名
* @return string データ
*/
public function get_data($pos) {
return $this->row_[$pos];
}
/**
* fetchしたデータの取得
*
* 現在指定されてる1行のデータを全部取得
*
* @access public
* @return array データの配列
*/
public function get_row() {
return $this->row_;
}
//private:
private $res_;
private $row_;
}
/**
* DBハンドルクラス Mysql
*
* DBハンドルを取り扱います
*
* @deprecated
* @package magicweapon
* @access public
* @author Michiaki Wuzawa <[email protected]>
**/
require_once('sql_util_mysql.inc');
require_once("mw_makesql_escaped_mysql.inc");
class dbh_mysql extends db_handle {
//public:
// コンストラクタ
public function __construct() {
//
parent::__construct();
//
$this->set_sql_util(new sql_util_mysql);
//
$o = new mw_makesql_escaped_mysql();
$o->set_db($this);
$this->set_mw_makesql($o);
}
/**
* DBへの接続
*
* @access public
* @return boolean 接続できたらtrue、出来なかったらfalse
*/
public function connect() {
// すでに接続されていたら処理しない
if (false === (is_null($this->conn_))) {
return true;
}
//var_dump($this->conn_);
// 引数を作る
$param = "";
if ("" != $this->get_host_name()) {
$param = $this->get_host_name();
if ("" != $this->get_port_num()) {
$param .= ":" . $this->get_port_num();
}
}
//print "mysql param is $param \n";
// connect
if (!($this->conn_ = mysql_connect($param, $this->get_user(), $this->get_pass(), true))) {
//print $this->conn_->mysql_error() . "\n";
$this->set_error_message("connect error!!");
return false;
}
//print "connect\n";
//var_dump($this->conn_);
// db set
$ret = mysql_select_db($this->get_database_name(), $this->conn_);
//print 'mysql select db ret is ';
//var_dump($ret);
//print mysql_error();
//print "database is " . $this->get_database_name() . "\n";
//var_dump($this->conn_);
//
$this->on_connect();
return true;
}
/**
* DB接続の切断
*
* @access public
*/
public function disconnect() {
//print "run disconnect \n";
return @mysql_close($this->conn_);
}
/**
* 「SQL文字列」によるクエリの発行
*
* @access public
* @param string $sql SQL文
* @return object SQL成功時にmysql_dataインスタンス、SQL失敗時にnull
*/
public function query_direct($sql) {
//print "mysql $sql \n";
if (!($result = mysql_query($sql, $this->conn_))) {
//var_dump($result);
$this->set_error_message(mysql_error($this->conn_));
//var_dump($this->get_error_message());
return null;
}
$ret = new mysql_data($result, $this->conn_);
return $ret;
}
/**
* 「準備された文」によるクエリの発行
*
* XXX ここではこの実装は使えないので常に失敗になります
*
* @access public
* @param object $sql mw_sqlインスタンス
* @return object 常に失敗なので、null
*/
public function query_prepared($sql) {
return NULL;
}
/**
* エスケープ処理メソッド
*
* @deprecated
* @access public
* @param string $s エスケープしたい文字列
* @return string エスケープされた文字列
*/
public function escape($s)
{
return mysql_real_escape_string($s, $this->conn_);
}
/**
* auto increment時の、inseerした時のIDの取得
*
* @access public
* @return int insertで自動的に割り当てられたIDの値
*/
public function get_inserted_id() {
return mysql_insert_id($this->conn_);
}
//private:
private $conn_ = null;
}