| serg-php |
09.11.2008 11:54 |
.:EnoT:.,
я так понял у меня данные функции в файле соследующим содержанием:
PHP код:
<?php
define('DB_FETCH_ORDERED', 1);
define('DB_FETCH_ASSOC', 2);
if(!function_exists('mysql_connect')){
if(function_exists('mysqli_connect')) { // MySQLi workaround
function mysql_connect($server,$user,$pass){ return mysqli_connect($server,$user,$pass); }
function mysql_fetch_row($res) { return mysqli_fetch_row($res); }
function mysql_fetch_assoc($res) { return mysqli_fetch_assoc($res); }
function mysql_data_seek($res,$i) { return mysqli_data_seek($res,$i); }
function mysql_free_result($res) { return mysqli_free_result($res); }
function mysql_num_rows($res) { return mysqli_num_rows($res); }
function mysql_error($conn) { return mysqli_error($conn); }
function mysql_errno($conn) { return mysqli_errno($conn); }
function mysql_real_escape_string($s, $conn) { return mysqli_real_escape_string($conn, $s); }
function mysql_query($sql, $conn) { return mysqli_query($conn, $sql); }
function mysql_insert_id($conn) { return mysqli_insert_id($conn); }
function mysql_affected_rows($conn) { return mysqli_affected_rows($conn); }
function mysql_get_server_info($conn) { return mysqli_get_server_info($conn); }
function mysql_select_db($name,$conn) { return mysqli_select_db($conn, $name); }
function mysql_num_fields($res) { return mysqli_num_fields($res); }
function mysql_field_name($res, $i){
mysqli_field_seek($res,$i);
$finfo = mysqli_fetch_field($res);
return $finfo->name;
}
}
elseif(class_exists('PDO')){
include SITE_PATH.'inc/pdo.inc.php'; // experimental layer
}
}
// if PHP < 4.3.0
if(!function_exists('mysql_real_escape_string')){
function mysql_real_escape_string($s, $conn){ return mysql_escape_string($s); }
}
class Es_DB_Stats {
var $a_sql = array();
var $a_time = array();
var $a_mem = array();
var $o_tm;
function logSQL($sql){
//$sql.=' /* '.$this->_stack_trace().' */';
$this->a_sql[] = $sql;
}
function startQuery(){
$this->o_tm = &Factory::create('HwTimer');
$this->o_tm->startTimer();
}
function endQuery(){
$this->a_time[] = $this->o_tm->endTimer();
if(function_exists('memory_get_usage')) $this->a_mem[] = memory_get_usage();
}
function _stack_trace(){
$stack = array();
$trace = debug_backtrace();
array_splice($trace, 0, 3);
// push each function onto the stack
$len = strlen(SITE_PATH);
foreach($trace as $t) $stack[] = $t['function'].'() ['.substr($t['file'],$len).']';
$stack = array_reverse($stack);
return implode(' > ', $stack);
}
}
class Database {
var $CONN = '';
var $CURDB = '';
var $ERR_EXIT = TRUE;
var $ERR_MSG = '';
var $DEBUG = FALSE;
var $o_stats;
var $is_1st_obj = TRUE;
function Database(){
$this->DEBUG = (EN_DEBUG_SQL==1 && $_GET['debug']);
if($this->DEBUG || DEBUG_LEVEL>0){
$this->o_stats = &Factory::singleton('Es_DB_Stats');
}
if(!isset($GLOBALS['MYSQL_CONN'])) $GLOBALS['MYSQL_CONN'] = '';
else $this->is_1st_obj = false;
}
function __destruct(){
// for session_db.php
if($this->is_1st_obj && !is_resource($GLOBALS['MYSQL_CONN'])) $GLOBALS['MYSQL_CONN'] = $this->CONN;
}
function error($text = '') {
if($this->ERR_EXIT){
$v = array();
$v['mysql_error'] = mysql_error();
$v['mysql_errno'] = mysql_errno();
$v['date'] = date('l dS of F Y h:i:s A');
$v['ADMIN_EMAIL'] = ADMIN_EMAIL;
$v['EC_TITLE'] = EC_TITLE;
$v['REQUEST_URI'] = html_esc($_SERVER['REQUEST_URI']);
$v['HTTP_REFERER'] = html_esc($_SERVER['HTTP_REFERER']);
EvalAdvTpl(TPL_PATH.'error_db_query.htm',$v,1);
// FileWrite("/path/error_sql_log", $text."\n".$v['mysql_error']."\n".$v['REQUEST_URI']."\n\n", true);
// Display Error Details if debug option is enabled only
if(EN_DEBUG_SQL==1){
echo $text;
// print_r(debug_backtrace());
// debug_print_backtrace(); // php5
}
exit;
}
else $this->ERR_MSG = mysql_error();
}
function connect($server, $user = '', $pass = '', $dbase = '', $new_link = FALSE) {
if($user=='' && $pass==''){
$user = ini_get('mysql.default_user');
$pass = ini_get('mysql.default_password');
}
if(!function_exists('mysql_connect')) die('No MySQL extension found');
$this->CONN = @mysql_connect($server,$user,$pass,$new_link);
if(!$this->CONN) return false; // since 4.0.5
if($dbase) $this->set_db($dbase);
// possible mysql 5.x tweaks
// mysql_query('SET SQL_MODE="MYSQL40"', $this->CONN);
// mysql_query('SET SESSION storage_engine=MyISAM', $this->CONN);
return true;
}
/*
Valid SQL examples :
$db->query('SELECT * FROM TABLE WHERE COND="'.$db->quote($val).'"');
$db->query('SELECT * FROM TABLE WHERE COND='.$db->esc($val));
$db->query('SELECT * FROM TABLE WHERE COND=?', array($val));
$db->query('SELECT * FROM TABLE WHERE COND=:val', array(':val'=> $val));
*/
function query($sql, $a_in = NULL) {
if($this->DEBUG) $this->o_stats->startQuery();
$res = NULL;
if(!is_null($a_in)){
if(!is_array($a_in)) $a_in = array($a_in);
if(is_object($this->CONN)){ // PDO
$res = $this->CONN->prepare($sql);
$res->execute($a_in);
}
elseif(key($a_in)===0){
$a_sql = explode('?', $sql);
$sql = '';
$cnt = count($a_in);
for($k=0;$k<$cnt;$k++){
if($a_in[$k]!='') $a_in[$k] = mysql_real_escape_string($a_in[$k],$this->CONN);
$sql.=$a_sql[$k].'"'.$a_in[$k].'"';
}
$sql.=$a_sql[$k];
}
else{
foreach(array_keys($a_in) as $k){
if($a_in[$k]!='') $a_in[$k] = mysql_real_escape_string($a_in[$k],$this->CONN);
$sql = str_replace( ($k[0]!=':' ? ':' : '').$k , '"'.$a_in[$k].'"', $sql);
}
}
}
if(!$res) $res = mysql_query($sql, $this->CONN);
if(!$res) $this->error("QUERY failed : $sql");
if($this->DEBUG || DEBUG_LEVEL>0){
if($this->DEBUG) $this->o_stats->endQuery();
$this->o_stats->logSQL($sql);
}
return $res;
}
function insert_id() {
return (int)mysql_insert_id($this->CONN);
}
function affected_rows() {
return (int)mysql_affected_rows($this->CONN);
}
function set_db($name){
if(!$name || $this->CURDB==$name) return;
if(!@mysql_select_db($name,$this->CONN)) $this->error('DB select failed');
$this->CURDB = $name;
}
function esc($s) {
if($s=='') return '""';
return '"'.mysql_real_escape_string($s,$this->CONN).'"';
}
function quote($s) { // deprecated, use esc() instead ?
if($s=='') return '';
return mysql_real_escape_string($s,$this->CONN);
}
function one_data($sql, $a_in = NULL) {
$res = $this->query($sql, $a_in);
if(empty($res)) return;
$v = mysql_fetch_row($res);
return $v[0];
}
function one_assoc($sql, $a_in = NULL) {
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
return mysql_fetch_assoc($res);
}
function one_row($sql, $a_in = NULL) {
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
return mysql_fetch_row($res);
}
function one_col_array($sql, $a_in = NULL){
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
$data = array();
while ($v = mysql_fetch_row($res)) $data[] = $v[0];
mysql_free_result($res);
return $data;
}
function two_col_assoc($sql, $a_in = NULL){
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
$data = array();
while($v = mysql_fetch_row($res)) $data[$v[0]] = $v[1];
mysql_free_result($res);
return $data;
}
function select($sql, $a_in = NULL, $mode = DB_FETCH_ASSOC){
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
$data = array();
if($mode == DB_FETCH_ORDERED){
while ($v = mysql_fetch_row($res)) $data[] = $v;
}
else{
while ($v = mysql_fetch_assoc($res)) $data[] = $v;
}
mysql_free_result($res);
return $data;
}
function version() {
if(defined('DB_VERSION')) return DB_VERSION;
$s = explode('.', mysql_get_server_info($this->CONN));
define('DB_VERSION', (int)sprintf('%d%02d%02d', $s[0], $s[1], intval($s[2])));
return DB_VERSION;
}
function get_server_info() { return mysql_get_server_info($this->CONN); }
// some extra functions
function getAll($sql, $params = NULL){ return $this->select($sql, $params); }
function getCol($sql, $col = 0, $a_in = NULL){
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
$data = array();
if(is_int($col)){
while ($v = mysql_fetch_row($res)) $data[] = $v[$col];
}
else{
while ($v = mysql_fetch_assoc($res)) $data[] = $v[$col];
}
mysql_free_result($res);
return $data;
}
function getAssoc($sql, $force_array = false, $a_in = NULL, $mode = DB_FETCH_ORDERED){
$res = $this->query($sql, $a_in);
if(empty($res)) return array();
$data = array();
if(!$force_array && mysql_num_fields($res) == 2){
while($v = mysql_fetch_row($res)) $data[$v[0]] = $v[1];
}
else{
if($mode == DB_FETCH_ASSOC){
$fid = mysql_field_name($res, 0);
while($v = mysql_fetch_assoc($res)){
$k = $v[$fid];
unset($v[$fid]);
$data[$k] = $v;
}
}
else{
while($v = mysql_fetch_row($res)){
$k = $v[0];
unset($v[0]);
$data[$k] = $v; // array_values ??
}
}
}
mysql_free_result($res);
return $data;
}
}
А кудуда ставить именно здесь?
|