📄 database_interface.lib.php
字号:
function PMA_DBI_postConnect($link, $is_controluser = false){ if (!defined('PMA_MYSQL_INT_VERSION')) { $mysql_version = PMA_DBI_fetch_value( 'SELECT VERSION()', 0, 0, $link, PMA_DBI_QUERY_STORE); if ( $mysql_version ) { $match = explode('.', $mysql_version); define('PMA_MYSQL_INT_VERSION', (int) sprintf('%d%02d%02d', $match[0], $match[1], intval($match[2]))); define('PMA_MYSQL_STR_VERSION', $mysql_version); unset($mysql_version, $match); } else { define('PMA_MYSQL_INT_VERSION', 32332); define('PMA_MYSQL_STR_VERSION', '3.23.32'); } } if (!defined('PMA_ENGINE_KEYWORD')) { if (PMA_MYSQL_INT_VERSION >= 40102) { define('PMA_ENGINE_KEYWORD','ENGINE'); } else { define('PMA_ENGINE_KEYWORD','TYPE'); } } if (PMA_MYSQL_INT_VERSION >= 40100) { // If $lang is defined and we are on MySQL >= 4.1.x, // we auto-switch the lang to its UTF-8 version (if it exists and user // didn't force language) if ( !empty($GLOBALS['lang']) && (substr($GLOBALS['lang'], -5) != 'utf-8') && !isset($GLOBALS['cfg']['Lang']) ) { $lang_utf_8_version = substr($GLOBALS['lang'], 0, strpos($GLOBALS['lang'], '-')) . '-utf-8'; if (!empty($GLOBALS['available_languages'][$lang_utf_8_version])) { $GLOBALS['lang'] = $lang_utf_8_version; $GLOBALS['charset'] = 'utf-8'; } } // and we remove the non-UTF-8 choices to avoid confusion if (!defined('PMA_REMOVED_NON_UTF_8')) { foreach ( $GLOBALS['available_languages'] as $each_lang => $dummy ) { if ( substr($each_lang, -5) != 'utf-8' ) { unset( $GLOBALS['available_languages'][$each_lang] ); } } define('PMA_REMOVED_NON_UTF_8', 1); } $mysql_charset = $GLOBALS['mysql_charset_map'][$GLOBALS['charset']]; if ( $is_controluser || empty($GLOBALS['collation_connection']) || (strpos($GLOBALS['collation_connection'], '_') ? substr($GLOBALS['collation_connection'], 0, strpos($GLOBALS['collation_connection'], '_')) : $GLOBALS['collation_connection']) == $mysql_charset) { PMA_DBI_query('SET NAMES ' . $mysql_charset . ';', $link, PMA_DBI_QUERY_STORE); } else { PMA_DBI_query('SET CHARACTER SET ' . $mysql_charset . ';', $link, PMA_DBI_QUERY_STORE); } if (!empty($GLOBALS['collation_connection'])) { PMA_DBI_query('SET collation_connection = \'' . $GLOBALS['collation_connection'] . '\';', $link, PMA_DBI_QUERY_STORE); } if (!$is_controluser) { $GLOBALS['collation_connection'] = PMA_DBI_get_variable('collation_connection', PMA_DBI_GETVAR_SESSION, $link); $GLOBALS['charset_connection'] = PMA_DBI_get_variable('character_set_connection', PMA_DBI_GETVAR_SESSION, $link); } // Add some field types to the list, this needs to be done once per session! if ($GLOBALS['cfg']['ColumnTypes'][count($GLOBALS['cfg']['ColumnTypes']) - 1] != 'VARBINARY') { $GLOBALS['cfg']['ColumnTypes'][] = 'BINARY'; $GLOBALS['cfg']['ColumnTypes'][] = 'VARBINARY'; } } else { require_once('./libraries/charset_conversion.lib.php'); }}/** * returns a single value from the given result or query, * if the query or the result has more than one row or field * the first field of the first row is returned * * <code> * $sql = 'SELECT `name` FROM `user` WHERE `id` = 123'; * $user_name = PMA_DBI_fetch_value( $sql ); * // produces * // $user_name = 'John Doe' * </code> * * @uses is_string() * @uses is_int() * @uses PMA_DBI_try_query() * @uses PMA_DBI_num_rows() * @uses PMA_DBI_fetch_row() * @uses PMA_DBI_fetch_assoc() * @uses PMA_DBI_free_result() * @param string|mysql_result $result query or mysql result * @param integer $row_number row to fetch the value from, * starting at 0, with 0 beeing default * @param integer|string $field field to fetch the value from, * starting at 0, with 0 beeing default * @param resource $link mysql link * @param mixed $options * @return mixed value of first field in first row from result * or false if not found */function PMA_DBI_fetch_value( $result, $row_number = 0, $field = 0, $link = null, $options = 0 ) { $value = false; if ( is_string( $result ) ) { $result = PMA_DBI_try_query( $result, $link, $options | PMA_DBI_QUERY_STORE ); } // return false if result is empty or false // or requested row is larger than rows in result if ( PMA_DBI_num_rows( $result ) < ( $row_number + 1 ) ) { return $value; } // if $field is an integer use non associative mysql fetch function if ( is_int( $field ) ) { $fetch_function = 'PMA_DBI_fetch_row'; } else { $fetch_function = 'PMA_DBI_fetch_assoc'; } // get requested row for ( $i = 0; $i <= $row_number; $i++ ) { $row = $fetch_function( $result ); } PMA_DBI_free_result( $result ); // return requested field if ( isset( $row[$field] ) ) { $value = $row[$field]; } unset( $row ); return $value;}/** * returns only the first row from the result * * <code> * $sql = 'SELECT * FROM `user` WHERE `id` = 123'; * $user = PMA_DBI_fetch_single_row( $sql ); * // produces * // $user = array( 'id' => 123, 'name' => 'John Doe' ) * </code> * * @uses is_string() * @uses PMA_DBI_try_query() * @uses PMA_DBI_num_rows() * @uses PMA_DBI_fetch_row() * @uses PMA_DBI_fetch_assoc() * @uses PMA_DBI_fetch_array() * @uses PMA_DBI_free_result() * @param string|mysql_result $result query or mysql result * @param string $type NUM|ASSOC|BOTH * returned array should either numeric * associativ or booth * @param resource $link mysql link * @param mixed $options * @return array|boolean first row from result * or false if result is empty */function PMA_DBI_fetch_single_row( $result, $type = 'ASSOC', $link = null, $options = 0 ) { if ( is_string( $result ) ) { $result = PMA_DBI_try_query( $result, $link, $options | PMA_DBI_QUERY_STORE ); } // return null if result is empty or false if ( ! PMA_DBI_num_rows( $result ) ) { return false; } switch ( $type ) { case 'NUM' : $fetch_function = 'PMA_DBI_fetch_row'; break; case 'ASSOC' : $fetch_function = 'PMA_DBI_fetch_assoc'; break; case 'BOTH' : default : $fetch_function = 'PMA_DBI_fetch_array'; break; } $row = $fetch_function( $result ); PMA_DBI_free_result( $result ); return $row;}/** * returns all rows in the resultset in one array * * <code> * $sql = 'SELECT * FROM `user`'; * $users = PMA_DBI_fetch_result( $sql ); * // produces * // $users[] = array( 'id' => 123, 'name' => 'John Doe' ) * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = PMA_DBI_fetch_result( $sql, 'id' ); * // produces * // $users['123'] = array( 'id' => 123, 'name' => 'John Doe' ) * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = PMA_DBI_fetch_result( $sql, 0 ); * // produces * // $users['123'] = array( 0 => 123, 1 => 'John Doe' ) * * $sql = 'SELECT `id`, `name` FROM `user`'; * $users = PMA_DBI_fetch_result( $sql, 'id', 'name' ); * // or * $users = PMA_DBI_fetch_result( $sql, 0, 1 ); * // produces * // $users['123'] = 'John Doe' * * $sql = 'SELECT `name` FROM `user`'; * $users = PMA_DBI_fetch_result( $sql ); * // produces * // $users[] = 'John Doe' * </code> * * @uses is_string() * @uses is_int() * @uses PMA_DBI_try_query() * @uses PMA_DBI_num_rows() * @uses PMA_DBI_num_fields() * @uses PMA_DBI_fetch_row() * @uses PMA_DBI_fetch_assoc() * @uses PMA_DBI_free_result() * @param string|mysql_result $result query or mysql result * @param string|integer $key field-name or offset * used as key for array * @param string|integer $value value-name or offset * used as value for array * @param resource $link mysql link * @param mixed $options * @return array resultrows or values indexed by $key */function PMA_DBI_fetch_result( $result, $key = null, $value = null, $link = null, $options = 0 ){ $resultrows = array(); if ( is_string($result) ) { $result = PMA_DBI_try_query($result, $link, $options); } // return empty array if result is empty or false if ( ! $result ) { return $resultrows; } $fetch_function = 'PMA_DBI_fetch_assoc'; // no nested array if only one field is in result if ( null === $key && 1 === PMA_DBI_num_fields($result) ) { $value = 0; $fetch_function = 'PMA_DBI_fetch_row'; } // if $key is an integer use non associative mysql fetch function if ( is_int($key) ) { $fetch_function = 'PMA_DBI_fetch_row'; } if ( null === $key && null === $value ) { while ( $row = $fetch_function($result) ) { $resultrows[] = $row; } } elseif ( null === $key ) { while ( $row = $fetch_function($result) ) { $resultrows[] = $row[$value]; } } elseif ( null === $value ) { if ( is_array($key) ) { while ( $row = $fetch_function($result) ) { $result_target =& $resultrows; foreach ( $key as $key_index ) { if ( ! isset( $result_target[$row[$key_index]] ) ) { $result_target[$row[$key_index]] = array(); } $result_target =& $result_target[$row[$key_index]]; } $result_target = $row; } } else { while ( $row = $fetch_function($result) ) { $resultrows[$row[$key]] = $row; } } } else { if ( is_array($key) ) { while ( $row = $fetch_function($result) ) { $result_target =& $resultrows; foreach ( $key as $key_index ) { if ( ! isset( $result_target[$row[$key_index]] ) ) { $result_target[$row[$key_index]] = array(); } $result_target =& $result_target[$row[$key_index]]; } $result_target = $row[$value]; } } else { while ( $row = $fetch_function($result) ) { $resultrows[$row[$key]] = $row[$value]; } } } PMA_DBI_free_result($result); return $resultrows;}/** * return default table engine for given database * * @return string default table engine */function PMA_DBI_get_default_engine(){ if ( PMA_MYSQL_INT_VERSION > 50002 ) { return PMA_DBI_fetch_value( 'SHOW VARIABLES LIKE \'storage_engine\';', 0, 1 ); } else { return PMA_DBI_fetch_value( 'SHOW VARIABLES LIKE \'table_type\';', 0, 1 ); }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -