0) { $row = PMA_DBI_fetch_row($result); $match = explode('.', $row[0]); PMA_DBI_free_result($result); } if (!isset($row)) { define('PMA_MYSQL_INT_VERSION', 32332); define('PMA_MYSQL_STR_VERSION', '3.23.32'); } else{ define('PMA_MYSQL_INT_VERSION', (int)sprintf('%d%02d%02d', $match[0], $match[1], intval($match[2]))); define('PMA_MYSQL_STR_VERSION', $row[0]); unset($result, $row, $match); } } 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'] = $charset = 'utf-8'; } } // and we remove the non-UTF-8 choices to avoid confusion if (!defined('PMA_REMOVED_NON_UTF_8')) { $tmp_available_languages = $GLOBALS['available_languages']; $GLOBALS['available_languages'] = array(); foreach ($tmp_available_languages AS $tmp_lang => $tmp_lang_data) { if (substr($tmp_lang, -5) == 'utf-8') { $GLOBALS['available_languages'][$tmp_lang] = $tmp_lang_data; } } // end foreach unset($tmp_lang, $tmp_lang_data, $tmp_available_languages); define('PMA_REMOVED_NON_UTF_8',1); } $mysql_charset = $GLOBALS['mysql_charset_map'][$GLOBALS['charset']]; if ($is_controluser || empty($collation_connection) || (strpos($collation_connection, '_') ? substr($collation_connection, 0, strpos($collation_connection, '_')) : $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($collation_connection)) { PMA_DBI_query('SET collation_connection = \'' . $collation_connection . '\';', $link, PMA_DBI_QUERY_STORE); } if (!$is_controluser) { $collation_connection = PMA_DBI_get_variable('collation_connection', PMA_DBI_GETVAR_SESSION, $link); $charset_connection = PMA_DBI_get_variable('character_set_connection', PMA_DBI_GETVAR_SESSION, $link); } // Add some field types to the list // (we pass twice here; feel free to code something better :) if (!defined('PMA_ADDED_FIELD_TYPES')) { $GLOBALS['cfg']['ColumnTypes'][] = 'BINARY'; $GLOBALS['cfg']['ColumnTypes'][] = 'VARBINARY'; define('PMA_ADDED_FIELD_TYPES',1); } } 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 * * * $sql = 'SELECT `name` FROM `user` WHERE `id` = 123'; * $user_name = PMA_DBI_fetch_value( $sql ); * // produces * // $user_name = 'John Doe' * * * @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 * * * $sql = 'SELECT * FROM `user` WHERE `id` = 123'; * $user = PMA_DBI_fetch_single_row( $sql ); * // produces * // $user = array( 'id' => 123, 'name' => 'John Doe' ) * * * @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 * * * $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' * * * @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 ) { while ( $row = $fetch_function( $result ) ) { $resultrows[$row[$key]] = $row; } } else { while ( $row = $fetch_function( $result ) ) { $resultrows[$row[$key]] = $row[$value]; } } PMA_DBI_free_result( $result ); return $resultrows; } ?>