【php开源代码栏目提醒】:网学会员为广大网友收集整理了,database_interface.lib.php,希望对大家有所帮助!
<?php
/* $Id: database_interface.lib.php,v 2.39.2.2 2006/03/08 17:54:29 lem9 Exp $ */
// vim: expandtab sw=4 ts=4 sts=4:
/**
* Common Option Constants For DBI Functions
*/
// PMA_DBI_try_query()
define('PMA_DBI_QUERY_STORE', 1); // Force STORE_RESULT method, ignored by classic MySQL.
define('PMA_DBI_QUERY_UNBUFFERED', 2); // Do not read whole query
// PMA_DBI_get_variable()
define('PMA_DBI_GETVAR_SESSION', 1);
define('PMA_DBI_GETVAR_GLOBAL', 2);
/**
* Loads the mysql extensions if it is not loaded yet
*
* @param string $extension mysql extension to load
*/
function PMA_DBI_checkAndLoadMysqlExtension( $extension = 'mysql' ) {
if ( ! function_exists( $extension . '_connect' ) ) {
PMA_dl( $extension );
// check whether mysql is available
if ( ! function_exists( $extension . '_connect' ) ) {
return false;
}
}
return true;
}
/**
* check for requested extension
*/
if ( ! PMA_DBI_checkAndLoadMysqlExtension( $GLOBALS['cfg']['Server']['extension'] ) ) {
// if it fails try alternative extension ...
// and display an error ...
// TODO 2.7.1: add different messages for alternativ extension
// and complete fail (no alternativ extension too)
$GLOBALS['PMA_errors'][] =
sprintf( PMA_sanitize( $GLOBALS['strCantLoad'] ),
$GLOBALS['cfg']['Server']['extension'] )
.' - <a href="./Documentation.html#faqmysql" target="documentation">'
.$GLOBALS['strDocu'] . '</a>';
if ( $GLOBALS['cfg']['Server']['extension'] === 'mysql' ) {
$alternativ_extension = 'my
sqli';
} else {
$alternativ_extension = '
mysql';
}
if ( ! PMA_DBI_checkAndLoadMysqlExtension( $alternativ_extension ) ) {
// if alternativ fails too ...
header( 'Location: error.php'
. '?lang=' . urlencode( $available_languages[$lang][2] )
. '&char=' . urlencode( $charset )
. '&dir=' . urlencode( $text_dir )
. '&type=' . urlencode( $strError )
. '&error=' . urlencode(
sprintf( $GLOBALS['strCantLoad'],
$GLOBALS['cfg']['Server']['extension'] )
.' - [a@./Documentation.html#faqmysql@documentation]'
.$GLOBALS['strDocu'] . '[/a]' )
. '&' . SID
);
exit();
}
$GLOBALS['cfg']['Server']['extension'] = $alternativ_extension;
unset( $alternativ_extension );
}
/**
* Including The DBI Plugin
*/
require_once('./libraries/dbi/' . $GLOBALS['cfg']['Server']['extension'] . '.dbi.lib.php');
/**
* Common Functions
*/
function PMA_DBI_query($query, $link = null, $options = 0) {
$res = PMA_DBI_try_query($query, $link, $options)
or PMA_mysqlDie(PMA_DBI_getError($link), $query);
return $res;
}
/**
* converts charset of a mysql message, usally coming from mysql_error(),
* into PMA charset, usally UTF-8
* uses language to charset mapping from mysql/share/errmsg.txt
* and charset names to ISO charset from information_schema.CHARACTER_SETS
*
* @uses $GLOBALS['cfg']['IconvExtraParams']
* @uses $GLOBALS['charset'] as target charset
* @uses PMA_DBI_fetch_value() to get server_language
* @uses preg_match() to filter server_language
* @uses in_array()
* @uses function_exists() to check for a convert function
* @uses iconv() to convert message
* @uses libiconv() to convert message
* @uses recode_string() to convert message
* @uses mb_convert_encoding() to convert message
* @param string $message
* @return string $message
*/
function PMA_DBI_convert_message( $message ) {
// latin always last!
$encodings = array(
'japanese' => 'EUC-JP', //'ujis',
'japanese-sjis' => 'Shift-JIS', //'sjis',
'korean' => 'EUC-KR', //'euckr',
'russian' => 'KOI8-R', //'koi8r',
'ukrainian' => 'KOI8-U', //'koi8u',
'greek' => 'ISO-8859-7', //'greek',
'serbian' => 'CP1250', //'cp1250',
'estonian' => 'ISO-8859-13', //'latin7',
'slovak' => 'ISO-8859-2', //'latin2',
'czech' => 'ISO-8859-2', //'latin2',
'hungarian' =