mysql_db.inc
来自「eGroupWare is a multi-user, web-based gr」· INC 代码 · 共 211 行
INC
211 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: mysql_db.inc,v 1.3 2003/12/18 16:46:16 iliaa Exp $** This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or * (at your option) any later version.***************************************************************************/function fud_sql_error_handler($query, $error_string, $error_number, $server_version){ if (db_locked()) { if ((__dbtype__ == 'mysql' && $query != 'UNLOCK TABLES') || (__dbtype__ == 'pgsql' && $query != 'COMMIT WORK')) { db_unlock(); } } if (function_exists("debug_backtrace")) { $tmp = debug_backtrace(); $_SERVER['PATH_TRANSLATED'] = ''; foreach ($tmp as $v) { $_SERVER['PATH_TRANSLATED'] .= "{$v['file']}:{$v['line']}<br />\n"; } } else if (!isset($_SERVER['PATH_TRANSLATED'])) { $_SERVER['PATH_TRANSLATED'] = realpath(__FILE__); } $error_msg = "(".$_SERVER['PATH_TRANSLATED'].") ".$error_number.": ".$error_string."<br />\n"; $error_msg .= "Query: ".htmlspecialchars($query)."<br />\n"; $error_msg .= "Server Version: ".$server_version."<br />\n"; if (isset($_SERVER['HTTP_REFERER'])) { $error_msg .= "[Referring Page] ".$_SERVER['HTTP_REFERER']."<br />\n"; } if (!error_log('['.gmdate("D M j G:i:s T Y", __request_timestamp__).'] '.base64_encode($error_msg)."\n", 3, $GLOBALS['ERROR_PATH'].'sql_errors')) { echo "<b>UNABLE TO WRITE TO SQL LOG FILE</b><br>\n"; echo $error_msg; } else { if (defined('forum_debug') || (isset($GLOBALS['usr']->users_opt) && $GLOBALS['usr']->users_opt & 1048576)) { echo $error_msg; } else { trigger_error('SQL Error has occurred, please contact the <a href="mailto:'.$GLOBALS['ADMIN_EMAIL'].'?subject=SQL%20Error">administrator</a> of the forum and have them review the forum's SQL query log', E_USER_ERROR); if (ini_get('display_errors') !== 1) { exit('SQL Error has occurred, please contact the <a href="mailto:'.$GLOBALS['ADMIN_EMAIL'].'?subject=SQL%20Error">administrator</a> of the forum and have them review the forum's SQL query log'); } } } exit;}if (!defined('__dbtype__')) { define('__dbtype__', 'mysql'); define('__FUD_SQL_CONCAT__', 'CONCAT');}function get_version(){ if (!defined('__FUD_SQL_VERSION__')) { define('__FUD_SQL_VERSION__', @current(mysql_fetch_row(mysql_query('SELECT VERSION()', fud_sql_lnk)))); } return __FUD_SQL_VERSION__;}function db_lock($tables){ if (!empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { fud_sql_error_handler("Recursive Lock", "internal", "internal", get_version()); } else { q('LOCK TABLES '.$tables); $GLOBALS['__DB_INC_INTERNALS__']['db_locked'] = 1; }}function db_unlock(){ if (empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler("DB_UNLOCK: no previous lock established", "internal", "internal", get_version()); } if (--$GLOBALS['__DB_INC_INTERNALS__']['db_locked'] < 0) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler("DB_UNLOCK: unlock overcalled", "internal", "internal", get_version()); } unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); q('UNLOCK TABLES', fud_sql_lnk);}function db_locked(){ return isset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']);}function db_affected(){ return mysql_affected_rows(fud_sql_lnk); }function q($query){ $r = mysql_query($query, fud_sql_lnk) or die (fud_sql_error_handler($query, mysql_error(fud_sql_lnk), mysql_errno(fud_sql_lnk), get_version())); return $r;}function uq($query){ $r = mysql_unbuffered_query($query,fud_sql_lnk) or die (fud_sql_error_handler($query, mysql_error(fud_sql_lnk), mysql_errno(fud_sql_lnk), get_version())); return $r;}function db_count($result){ return (int) @mysql_num_rows($result);}function db_seek($result, $pos){ return mysql_data_seek($result, $pos);}function &db_rowobj($result){ return mysql_fetch_object($result);}function &db_rowarr($result){ return mysql_fetch_row($result);}function &q_singleval($query){ if (($res = @mysql_fetch_row(q($query))) === false) { return null; } else { return $res[0]; }}function get_field_list($tbl){ return uq('show fields from ' . $tbl);}function qry_limit($limit, $off){ return $off.','.$limit;}function get_fud_table_list(){ $r = uq("SHOW TABLES LIKE '".str_replace("_", "\\_", $GLOBALS['DBHOST_TBL_PREFIX'])."%'"); while (list($ret[]) = db_rowarr($r)); array_pop($ret); return $ret; }function optimize_tables($tbl_list=null){ if (!$tbl_list) { $tbl_list = get_fud_table_list(); } q('OPTIMIZE TABLE '. implode(', ', $tbl_list));}function &db_saq($q){ return @mysql_fetch_row(q($q));}function &db_sab($q){ return @mysql_fetch_object(q($q));}function db_qid($q){ q($q); return mysql_insert_id(fud_sql_lnk);}function &db_arr_assoc($q){ return mysql_fetch_array(q($q), MYSQL_ASSOC);}function db_li($q, &$ef, $li=0){ $r = mysql_query($q, fud_sql_lnk); if ($r) { return ($li ? mysql_insert_id(fud_sql_lnk) : $r); } /* duplicate key */ if (mysql_errno() == 1062) { $ef = ltrim(strrchr(mysql_error(), ' ')); return null; } else { die(fud_sql_error_handler($query, mysql_error(fud_sql_lnk), mysql_errno(fud_sql_lnk), get_version())); }}function ins_m($tbl, $flds, $vals, $type=0){ if (!$type) { q("INSERT IGNORE INTO ".$tbl." (".$flds.") VALUES (".implode('),(', $vals).")"); } else { q("INSERT INTO ".$tbl." (".$flds.") VALUES (".implode('),(', $vals).")"); }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?