[ Index ] |
|
Code source de PHP NUKE 7.9 |
1 <?php 2 3 /************************************************************************/ 4 /* PHP-NUKE: Web Portal System */ 5 /* =========================== */ 6 /* */ 7 /* Copyright (c) 2002 by Francisco Burzi */ 8 /* http://phpnuke.org */ 9 /* */ 10 /* postgres fix by Rubén Campos - Oscar Silla */ 11 /* */ 12 /* This program is free software. You can redistribute it and/or modify */ 13 /* it under the terms of the GNU General Public License as published by */ 14 /* the Free Software Foundation; either version 2 of the License. */ 15 /************************************************************************/ 16 17 if (stristr(htmlentities($_SERVER['PHP_SELF']), "sql_layer.php")) { 18 Header("Location: ../index.php"); 19 die(); 20 } 21 22 /* $dbtype = "MySQL"; */ 23 /* $dbtype = "mSQL"; */ 24 /* $dbtype = "postgres"; */ 25 /* $dbtype = "postgres_local";// When postmaster start without "-i" option. */ 26 /* $dbtype = "ODBC"; */ 27 /* $dbtype = "ODBC_Adabas"; */ 28 /* $dbtype = "Interbase"; */ 29 /* $dbtype = "Sybase"; */ 30 31 /* 32 * sql_connect($host, $user, $password, $db) 33 * returns the connection ID 34 */ 35 36 37 class ResultSet { 38 var $result; 39 var $total_rows; 40 var $fetched_rows; 41 42 function set_result( $res ) { 43 $this->result = $res; 44 } 45 46 function get_result() { 47 return $this->result; 48 } 49 50 function set_total_rows( $rows ) { 51 $this->total_rows = $rows; 52 } 53 54 function get_total_rows() { 55 return $this->total_rows; 56 } 57 58 function set_fetched_rows( $rows ) { 59 $this->fetched_rows = $rows; 60 } 61 62 function get_fetched_rows() { 63 return $this->fetched_rows; 64 } 65 66 function increment_fetched_rows() { 67 $this->fetched_rows = $this->fetched_rows + 1; 68 } 69 } 70 71 72 73 function sql_connect($host, $user, $password, $db) 74 { 75 global $dbtype; 76 switch ($dbtype) { 77 78 case "MySQL": 79 $dbi=@mysql_connect($host, $user, $password); 80 mysql_select_db($db); 81 return $dbi; 82 break;; 83 84 case "mSQL": 85 $dbi=msql_connect($host); 86 msql_select_db($db); 87 return $dbi; 88 break;; 89 90 91 case "postgres": 92 $dbi=@pg_connect("host=$host user=$user password=$password port=5432 dbname=$db"); 93 return $dbi; 94 break;; 95 96 case "postgres_local": 97 $dbi=@pg_connect("user=$user password=$password dbname=$db"); 98 return $dbi; 99 break;; 100 101 case "ODBC": 102 $dbi=@odbc_connect($db,$user,$password); 103 return $dbi; 104 break;; 105 106 case "ODBC_Adabas": 107 $dbi=@odbc_connect($host.":".$db,$user,$password); 108 return $dbi; 109 break;; 110 111 case "Interbase": 112 $dbi=@ibase_connect($host.":".$db,$user,$password); 113 return $dbi; 114 break;; 115 116 case "Sybase": 117 $dbi=@sybase_connect($host, $user, $password); 118 sybase_select_db($db,$dbi); 119 return $dbi; 120 break;; 121 122 default: 123 break;; 124 } 125 126 } 127 128 function sql_logout($id) 129 { 130 global $dbtype; 131 switch ($dbtype) { 132 133 case "MySQL": 134 $dbi=@mysql_close($id); 135 return $dbi; 136 break;; 137 138 case "mSQL": 139 $dbi=@msql_close($id); 140 return $dbi; 141 break;; 142 143 case "postgres": 144 case "postgres_local": 145 $dbi=@pg_close($id); 146 return $dbi; 147 break;; 148 149 case "ODBC": 150 case "ODBC_Adabas": 151 $dbi=@odbc_close($id); 152 return $dbi; 153 break;; 154 155 case "Interbase": 156 $dbi=@ibase_close($id); 157 return $dbi; 158 break;; 159 160 case "Sybase": 161 $dbi=@sybase_close($id); 162 return $dbi; 163 break;; 164 165 default: 166 break;; 167 } 168 } 169 170 171 /* 172 * sql_query($query, $id) 173 * executes an SQL statement, returns a result identifier 174 */ 175 176 function sql_query($query, $id) 177 { 178 179 global $dbtype, $sql_debug; 180 $sql_debug = 0; 181 if($sql_debug) echo "SQL query: ".str_replace(",",", ",$query)."<BR>"; 182 switch ($dbtype) { 183 184 case "MySQL": 185 $res=@mysql_query($query, $id); 186 return $res; 187 break;; 188 189 case "mSQL": 190 $res=@msql_query($query, $id); 191 return $res; 192 break;; 193 194 case "postgres": 195 case "postgres_local": 196 $res=pg_exec($id,$query); 197 $result_set = new ResultSet; 198 $result_set->set_result( $res ); 199 $result_set->set_total_rows( sql_num_rows( $result_set ) ); 200 $result_set->set_fetched_rows( 0 ); 201 return $result_set; 202 break;; 203 204 case "ODBC": 205 case "ODBC_Adabas": 206 $res=@odbc_exec($id,$query); 207 return $res; 208 break;; 209 210 case "Interbase": 211 $res=@ibase_query($id,$query); 212 return $res; 213 break;; 214 215 case "Sybase": 216 $res=@sybase_query($query, $id); 217 return $res; 218 break;; 219 220 default: 221 break;; 222 223 } 224 } 225 226 /* 227 * sql_num_rows($res) 228 * given a result identifier, returns the number of affected rows 229 */ 230 231 function sql_num_rows($res) 232 { 233 global $dbtype; 234 switch ($dbtype) { 235 236 case "MySQL": 237 $rows=mysql_num_rows($res); 238 return $rows; 239 break;; 240 241 case "mSQL": 242 $rows=msql_num_rows($res); 243 return $rows; 244 break;; 245 246 case "postgres": 247 case "postgres_local": 248 $rows=pg_numrows( $res->get_result() ); 249 return $rows; 250 break;; 251 252 case "ODBC": 253 case "ODBC_Adabas": 254 $rows=odbc_num_rows($res); 255 return $rows; 256 break;; 257 258 case "Interbase": 259 echo "<BR>Error! PHP dosen't support ibase_numrows!<BR>"; 260 return $rows; 261 break;; 262 263 case "Sybase": 264 $rows=sybase_num_rows($res); 265 return $rows; 266 break;; 267 268 default: 269 break;; 270 } 271 } 272 273 /* 274 * sql_fetch_row(&$res,$row) 275 * given a result identifier, returns an array with the resulting row 276 * Needs also a row number for compatibility with postgres 277 */ 278 279 function sql_fetch_row(&$res, $nr=0) 280 { 281 global $dbtype; 282 switch ($dbtype) { 283 284 case "MySQL": 285 $row = mysql_fetch_row($res); 286 return $row; 287 break;; 288 289 case "mSQL": 290 $row = msql_fetch_row($res); 291 return $row; 292 break;; 293 294 case "postgres": 295 case "postgres_local": 296 if ( $res->get_total_rows() > $res->get_fetched_rows() ) { 297 $row = pg_fetch_row($res->get_result(), $res->get_fetched_rows() ); 298 $res->increment_fetched_rows(); 299 return $row; 300 } else { 301 return false; 302 } 303 break;; 304 305 case "ODBC": 306 case "ODBC_Adabas": 307 $row = array(); 308 $cols = odbc_fetch_into($res, $nr, $row); 309 return $row; 310 break;; 311 312 case "Interbase": 313 $row = ibase_fetch_row($res); 314 return $row; 315 break;; 316 317 case "Sybase": 318 $row = sybase_fetch_row($res); 319 return $row; 320 break;; 321 322 default: 323 break;; 324 } 325 } 326 327 /* 328 * sql_fetch_array($res,$row) 329 * given a result identifier, returns an associative array 330 * with the resulting row using field names as keys. 331 * Needs also a row number for compatibility with postgres. 332 */ 333 334 function sql_fetch_array(&$res, $nr=0) 335 { 336 global $dbtype; 337 switch ($dbtype) 338 { 339 case "MySQL": 340 $row = array(); 341 $row = mysql_fetch_array($res); 342 return $row; 343 break;; 344 345 case "mSQL": 346 $row = array(); 347 $row = msql_fetch_array($res); 348 return $row; 349 break;; 350 351 case "postgres": 352 case "postgres_local": 353 if( $res->get_total_rows() > $res->get_fetched_rows() ) { 354 $row = array(); 355 $row = pg_fetch_array($res->get_result(), $res->get_fetched_rows() ); 356 $res->increment_fetched_rows(); 357 return $row; 358 } else { 359 return false; 360 } 361 break;; 362 363 /* 364 * ODBC doesn't have a native _fetch_array(), so we have to 365 * use a trick. Beware: this might cause HUGE loads! 366 */ 367 368 case "ODBC": 369 $row = array(); 370 $result = array(); 371 $result = odbc_fetch_row($res, $nr); 372 $nf = odbc_num_fields($res); /* Field numbering starts at 1 */ 373 for($count=1; $count < $nf+1; $count++) 374 { 375 $field_name = odbc_field_name($res, $count); 376 $field_value = odbc_result($res, $field_name); 377 $row[$field_name] = $field_value; 378 } 379 return $row; 380 break;; 381 382 case "ODBC_Adabas": 383 $row = array(); 384 $result = array(); 385 $result = odbc_fetch_row($res, $nr); 386 387 $nf = count($result)+2; /* Field numbering starts at 1 */ 388 for($count=1; $count < $nf; $count++) { 389 $field_name = odbc_field_name($res, $count); 390 $field_value = odbc_result($res, $field_name); 391 $row[$field_name] = $field_value; 392 } 393 return $row; 394 break;; 395 396 case "Interbase": 397 $orow=ibase_fetch_object($res); 398 $row=get_object_vars($orow); 399 return $row; 400 break;; 401 402 case "Sybase": 403 $row = sybase_fetch_array($res); 404 return $row; 405 break;; 406 407 } 408 } 409 410 function sql_fetch_object(&$res, $nr=0) 411 { 412 global $dbtype; 413 switch ($dbtype) 414 { 415 case "MySQL": 416 $row = mysql_fetch_object($res); 417 if($row) return $row; 418 else return false; 419 break;; 420 421 case "mSQL": 422 $row = msql_fetch_object($res); 423 if($row) return $row; 424 else return false; 425 break;; 426 427 case "postgres": 428 case "postgres_local": 429 if( $res->get_total_rows() > $res->get_fetched_rows() ) { 430 $row = pg_fetch_object( $res->get_result(), $res->get_fetched_rows() ); 431 $res->increment_fetched_rows(); 432 if($row) return $row; 433 else return false; 434 } else { 435 return false; 436 } 437 break;; 438 439 case "ODBC": 440 $result = odbc_fetch_row($res, $nr); 441 if(!$result) return false; 442 $nf = odbc_num_fields($res); /* Field numbering starts at 1 */ 443 for($count=1; $count < $nf+1; $count++) 444 { 445 $field_name = odbc_field_name($res, $count); 446 $field_value = odbc_result($res, $field_name); 447 $row->$field_name = $field_value; 448 } 449 return $row; 450 break;; 451 452 case "ODBC_Adabas": 453 $result = odbc_fetch_row($res, $nr); 454 if(!$result) return false; 455 456 $nf = count($result)+2; /* Field numbering starts at 1 */ 457 for($count=1; $count < $nf; $count++) { 458 $field_name = odbc_field_name($res, $count); 459 $field_value = odbc_result($res, $field_name); 460 $row->$field_name = $field_value; 461 } 462 return $row; 463 break;; 464 465 case "Interbase": 466 $orow = ibase_fetch_object($res); 467 if($orow) 468 { 469 $arow=get_object_vars($orow); 470 while(list($name,$key)=each($arow)) 471 { 472 $name=strtolower($name); 473 $row->$name=$key; 474 } 475 return $row; 476 }else return false; 477 break;; 478 479 case "Sybase": 480 $row = sybase_fetch_object($res); 481 return $row; 482 break;; 483 484 } 485 } 486 487 /*** Function Free Result for function free the memory ***/ 488 function sql_free_result($res) { 489 global $dbtype; 490 switch ($dbtype) { 491 492 case "MySQL": 493 $row = mysql_free_result($res); 494 return $row; 495 break;; 496 497 case "mSQL": 498 $row = msql_free_result($res); 499 return $row; 500 break;; 501 502 503 case "postgres": 504 case "postgres_local": 505 $rows=pg_FreeResult( $res->get_result() ); 506 return $rows; 507 break;; 508 509 case "ODBC": 510 case "ODBC_Adabas": 511 $rows=odbc_free_result($res); 512 return $rows; 513 break;; 514 515 case "Interbase": 516 echo "<BR>Error! PHP dosen't support ibase_numrows!<BR>"; 517 return $rows; 518 break;; 519 520 case "Sybase": 521 $rows=sybase_free_result($res); 522 return $rows; 523 break;; 524 } 525 } 526 527 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Apr 1 11:11:59 2007 | par Balluche grâce à PHPXref 0.7 |