Tokiwa Battle Royale  GE777
A PHP Battle Royale inspired game
 All Data Structures Namespaces Files Functions Variables Pages
db_mysql.class.php
Go to the documentation of this file.
1 <?php
2 
3 if (! defined ( 'IN_GAME' )) {
4  exit ( 'Access Denied' );
5 }
6 
7 class dbstuff {
8  var $querynum = 0;
9  var $selectnum = 0;
10  var $insertnum = 0;
11  var $updatenum = 0;
12  var $deletenum = 0;
13 
14  function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0) {
15  if ($pconnect) {
16  if (! mysql_pconnect ( $dbhost, $dbuser, $dbpw )) {
17  $this->halt ( 'Can not connect to MySQL server' );
18  }
19  } else {
20  if (! mysql_connect ( $dbhost, $dbuser, $dbpw )) {
21  $this->halt ( 'Can not connect to MySQL server' );
22  }
23  }
24 
25  if ($this->version () > '4.1') {
26  global $charset, $dbcharset;
27  if (! $dbcharset && in_array ( strtolower ( $charset ), array ('gbk', 'big5', 'utf-8' ) )) {
28  $dbcharset = str_replace ( '-', '', $charset );
29  }
30 
31  if ($dbcharset) {
32  mysql_query ( "SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=$dbcharset" );
33  }
34 
35  if ($this->version () > '5.0.1') {
36  mysql_query ( "SET sql_mode=''" );
37  }
38  }
39 
40  if ($dbname) {
41  mysql_select_db ( $dbname );
42  }
43 
44  }
45 
46  function select_db($dbname) {
47  return mysql_select_db ( $dbname );
48  }
49 
50  function fetch_array($query, $result_type = MYSQL_ASSOC) {
51  return mysql_fetch_array ( $query, $result_type );
52  }
53 
54  function query($sql, $type = '') {
55  $func = $type == 'UNBUFFERED' && function_exists ( 'mysql_unbuffered_query' ) ? 'mysql_unbuffered_query' : 'mysql_query';
56  if (! ($query = $func ( $sql )) && $type != 'SILENT') {
57  $this->halt ( 'MySQL Query Error', $sql );
58  }
59  $this->querynum ++;
60  if(strpos($sql,'SELECT')===0){$this->selectnum ++;}
61  elseif(strpos($sql,'INSERT')===0){$this->insertnum ++;}
62  elseif(strpos($sql,'UPDATE')===0){$this->updatenum ++;}
63  elseif(strpos($sql,'DELETE')===0){$this->deletenum ++;}
64  return $query;
65  }
66 
67  function queries ($queries) {
68  foreach (preg_split ("/[;]+/", trim($queries)) as $query_split) {
69  $query = '';
70  foreach (preg_split ("/[\n]+/", trim($query_split)) as $query_row){
71  if (!empty($query_row) && substr($query_row,0,2) != '--' && substr($query_row,0,1) != '#') {
72  $query .= $query_row;
73  }
74  }
75  if(substr($query, 0, 12) == 'CREATE TABLE') {
76  $this->query($this->create_table($query));
77  } elseif (!empty($query)) {
78  $this->query($query);
79  }
80  }
81  return;
82  }
83 
84  function create_table($sql) {
85  global $dbcharset;
86  $type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
87  $type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
88  return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql).
89  (mysql_get_server_info() > '4.1' ? " ENGINE=$type DEFAULT CHARSET=$dbcharset" : " TYPE=$type");
90  }
91 
92 // function Aselect($dbname, $where = Array(), $fields = Array(), $limit = '') {
93 // if (! empty ( $dbname )) {
94 // $dbname_string = mysql_real_escape_string($dbname);
95 // }else{
96 // return false;
97 // }
98 //
99 // if (! empty ( $fields )) {
100 // $fields_string = '';
101 // foreach($fields as $val){
102 // $val = mysql_real_escape_string($val);
103 // $fields_string .= "{$val},";
104 // }
105 // $fields_string = substr($fields_string,0,-1);
106 // }else{
107 // $fields_string = '*';
108 // }
109 //
110 // if (! empty ( $where )) {
111 // $where_string = '';
112 // foreach($where as $val){
113 // if(is_array($val) && isset($val[0]) && isset($val[1]) && isset($val[2])){
114 // $val[0] = mysql_real_escape_string($val[0]);
115 // $val[1] = mysql_real_escape_string($val[1]);
116 // $val[2] = mysql_real_escape_string($val[2]);
117 // $where_string .= $val[0].$val[1]."'".$val[2]."' AND ";
118 // }
119 // }
120 // if(!empty($where_string)){
121 // $where_string = 'WHERE '.substr($where_string,0,-5);
122 // }
123 // }else{
124 // $where_string = '';
125 // }
126 //
127 // if (! empty ( $limit )) {
128 // $limit_string = 'LIMIT '.mysql_real_escape_string($limit);
129 // }else{
130 // $limit_string = '';
131 // }
132 //
133 // $query = "SELECT {$fields_string} FROM {$dbname_string} {$where_string} {$limit_string}";
134 //
135 // //return $query;
136 // return $this->query ($query);
137 // }
138 
139 // function delete($dbname, $where){
140 // $query = "DELETE FROM {$dbname} WHERE {$where}";
141 // return $this->query ($query);
142 // }
143 
144  function array_insert($dbname, $data){ //根据$data的键和键值插入数据
145  $query = "INSERT INTO {$dbname} ";
146  $fieldlist = $valuelist = '';
147  foreach ($data as $key => $value) {
148  $fieldlist .= "{$key},";
149  $valuelist .= "'{$value}',";
150  }
151  if(!empty($fieldlist) && !empty($valuelist)){
152  $query .= '(' . substr($fieldlist, 0, -1) . ') VALUES (' . substr($valuelist, 0, -1) .')';
153  }
154  $this->query ($query);
155  return $query;
156  }
157 
158  function multi_insert($tblname, $data, $primary = ''){
159  $query = "INSERT INTO {$tblname} ";
160  $fieldlist = $valuelist = '';
161  foreach($data as $single){
162  $fieldtemp = $valuetemp = '';
163  foreach ($single as $key => $value) {
164  if($key != $primary){
165  if(empty($fieldlist) && $key != $primary){
166  $fieldtemp .= "{$key},";
167  }
168  $valuetemp .= "'{$value}',";
169  }
170  }
171  if(empty($fieldlist)){
172  //echo $fieldtemp;
173  $fieldlist = '('.substr($fieldtemp,0,-1).')';
174  }
175  $valuelist .= '('.substr($valuetemp,0,-1).'),';
176  }
177  //echo $fieldtemp;
178  if(!empty($fieldlist) && !empty($valuelist)){
179  $query .= $fieldlist . ' VALUES ' . substr($valuelist, 0, -1);
180  }
181 
182  $this->query ($query);
183  return $query;
184  }
185 
186  function array_update($dbname, $data, $where){ //根据$data的键和键值更新数据
187  $query = "UPDATE {$dbname} SET ";
188  foreach ($data as $key => $value) {
189  $query .= "{$key} = '{$value}',";
190  }
191  $query = substr($query, 0, -1) . " WHERE {$where}";
192  $this->query ($query);
193  return $query;
194  }
195 
196  function multi_update($dbname, $data, $confield, $singleqry = ''){
197  $fields = $range = Array();
198  foreach($data as $rval){
199  $con = $rval[$confield];
200  $range[] = "'$con'";
201  foreach($rval as $fkey => $fval){
202  if($fkey != $confield){
203  if(isset(${$fkey.'qry'})){
204  ${$fkey.'qry'} .= "WHEN '$con' THEN '$fval' ";
205  }else{
206  $fields[] = $fkey;
207  ${$fkey.'qry'} = "(CASE $confield WHEN '$con' THEN '$fval' ";
208  }
209  }
210  }
211  }
212  $query = '';
213  foreach($fields as $val){
214  if(!empty(${$val.'qry'})){
215  ${$val.'qry'} .= "END) ";
216  $query .= "$val = ${$val.'qry'},";
217  }
218  }
219  if(!empty($query)){
220  if($singleqry){$singleqry = ','.$singleqry;}
221  $query = "UPDATE {$dbname} SET ".substr($query,0,-1)."$singleqry WHERE $confield IN (".implode(',',$range).")";
222  $this->query ($query);
223  }
224  return $query;
225  }
226 
227 /* function select_fetch_array($dbname, $fields = '*', $where = '', $limit = '') { //返回二维数组
228  $query = "SELECT {$fields} FROM {$dbname} ";
229  if (! empty ( $where )) {
230  $query .= "WHERE {$where} ";
231  }
232  if (! empty ( $limit )) {
233  $query .= "LIMIT {$limit}";
234  }
235  $result = $this->query ($query);
236  while($data = $this->fetch_array($result)){
237 
238  }
239  }*/
240 
241  function affected_rows() {
242  return mysql_affected_rows ();
243  }
244 
245  function error() {
246  return mysql_error ();
247  }
248 
249  function errno() {
250  return intval ( mysql_errno () );
251  }
252 
253  function result($query, $row) {
254  $query = mysql_result ( $query, $row );
255  return $query;
256  }
257 
258  function data_seek($query, $row) {
259  return mysql_data_seek ( $query, $row );
260  }
261  function num_rows($query) {
262  $query = mysql_num_rows ( $query );
263  return $query;
264  }
265 
266  function num_fields($query) {
267  return mysql_num_fields ( $query );
268  }
269 
270  function free_result($query) {
271  return mysql_free_result ( $query );
272  }
273 
274  function insert_id() {
275  $id = mysql_insert_id ();
276  return $id;
277  }
278 
279  function fetch_row($query) {
280  $query = mysql_fetch_row ( $query );
281  return $query;
282  }
283 
284  function fetch_fields($query) {
285  return mysql_fetch_field ( $query );
286  }
287 
288  function version() {
289  return mysql_get_server_info ();
290  }
291 
292  function close() {
293  return mysql_close ();
294  }
295 
296  function halt($message = '', $sql = '') {
297  require_once GAME_ROOT . './include/db_mysql_error.inc.php';
298  }
299 }
300 
301 ?>
num_rows($query)
select_db($dbname)
fetch_array($query, $result_type=MYSQL_ASSOC)
$dbcharset
Definition: config.inc.php:73
array_update($dbname, $data, $where)
num_fields($query)
result($query, $row)
create_table($sql)
$dbpw
Definition: config.inc.php:12
query($sql, $type= '')
multi_update($dbname, $data, $confield, $singleqry= '')
data_seek($query, $row)
fetch_row($query)
【生存者数:<?php echo $alivenum?> 人】< input type="button"value="显示全部幸存者"onClick="$('alivemode').value='all';$('gbmode').value='none';postCmd('alive','alive.php');"></p > if($gamblingon &&$gamestate >=20) elseif($gamblingon &&$gamestate<=10)
Definition: 1_alive.tpl.php:18
fetch_fields($query)
const GAME_ROOT
Definition: clear.php:6
connect($dbhost, $dbuser, $dbpw, $dbname= '', $pconnect=0)
multi_insert($tblname, $data, $primary= '')
$charset
Definition: config.inc.php:70
$dbhost
Definition: config.inc.php:6
free_result($query)
$dbuser
Definition: config.inc.php:9
halt($message= '', $sql= '')
array_insert($dbname, $data)
$pconnect
Definition: config.inc.php:40
$dbname
Definition: config.inc.php:15
queries($queries)