📄 database_interface.lib.php
字号:
$sql .= "\n" . ' WHERE ' . implode(' AND ', $sql_wheres); } $columns = PMA_DBI_fetch_result($sql, $array_keys, null, $link); unset($sql_wheres, $sql); } else { if (null === $database) { foreach ($GLOBALS['pma']->databases as $database) { $columns[$database] = PMA_DBI_get_columns_full($database, null, null, $link); } return $columns; } elseif (null === $table) { $tables = PMA_DBI_get_tables($database); foreach ($tables as $table) { $columns[$table] = PMA_DBI_get_columns_full( $database, $table, null, $link); } return $columns; } $sql = 'SHOW FULL COLUMNS FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table); if (null !== $column) { $sql .= " LIKE '" . $column . "'"; } $columns = PMA_DBI_fetch_result($sql, 'Field', null, $link); $ordinal_position = 1; foreach ($columns as $column_name => $each_column) { // MySQL forward compatibility // so pma could use this array as if every server is of version >5.0 $columns[$column_name]['COLUMN_NAME'] =& $columns[$column_name]['Field']; $columns[$column_name]['COLUMN_TYPE'] =& $columns[$column_name]['Type']; $columns[$column_name]['COLLATION_NAME'] =& $columns[$column_name]['Collation']; $columns[$column_name]['IS_NULLABLE'] =& $columns[$column_name]['Null']; $columns[$column_name]['COLUMN_KEY'] =& $columns[$column_name]['Key']; $columns[$column_name]['COLUMN_DEFAULT'] =& $columns[$column_name]['Default']; $columns[$column_name]['EXTRA'] =& $columns[$column_name]['Extra']; $columns[$column_name]['PRIVILEGES'] =& $columns[$column_name]['Privileges']; $columns[$column_name]['COLUMN_COMMENT'] =& $columns[$column_name]['Comment']; $columns[$column_name]['TABLE_CATALOG'] = null; $columns[$column_name]['TABLE_SCHEMA'] = $database; $columns[$column_name]['TABLE_NAME'] = $table; $columns[$column_name]['ORDINAL_POSITION'] = $ordinal_position; $columns[$column_name]['DATA_TYPE'] = substr($columns[$column_name]['COLUMN_TYPE'], 0, strpos($columns[$column_name]['COLUMN_TYPE'], '(')); /** * @todo guess CHARACTER_MAXIMUM_LENGTH from COLUMN_TYPE */ $columns[$column_name]['CHARACTER_MAXIMUM_LENGTH'] = null; /** * @todo guess CHARACTER_OCTET_LENGTH from CHARACTER_MAXIMUM_LENGTH */ $columns[$column_name]['CHARACTER_OCTET_LENGTH'] = null; $columns[$column_name]['NUMERIC_PRECISION'] = null; $columns[$column_name]['NUMERIC_SCALE'] = null; $columns[$column_name]['CHARACTER_SET_NAME'] = substr($columns[$column_name]['COLLATION_NAME'], 0, strpos($columns[$column_name]['COLLATION_NAME'], '_')); $ordinal_position++; } if (null !== $column) { reset($columns); $columns = current($columns); } } return $columns;}/** * @todo should only return columns names, for more info use PMA_DBI_get_columns_full() * * @deprecated by PMA_DBI_get_columns() or PMA_DBI_get_columns_full() * @param string $database name of database * @param string $table name of table to retrieve columns from * @param mixed $link mysql link resource * @return array column info */function PMA_DBI_get_fields($database, $table, $link = null){ // here we use a try_query because when coming from // tbl_create + tbl_properties.inc.php, the table does not exist $fields = PMA_DBI_fetch_result( 'SHOW FULL COLUMNS FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table), null, null, $link); if (! is_array($fields) || count($fields) < 1) { return false; } return $fields;}/** * array PMA_DBI_get_columns(string $database, string $table, bool $full = false, mysql db link $link = null) * * @param string $database name of database * @param string $table name of table to retrieve columns from * @param boolean $full whether to return full info or only column names * @param mixed $link mysql link resource * @return array column names */function PMA_DBI_get_columns($database, $table, $full = false, $link = null){ $fields = PMA_DBI_fetch_result( 'SHOW ' . ($full ? 'FULL' : '') . ' COLUMNS FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table), 'Field', ($full ? null : 'Field'), $link); if (! is_array($fields) || count($fields) < 1) { return false; } return $fields;}/** * returns value of given mysql server variable * * @param string $var mysql server variable name * @param int $type PMA_DBI_GETVAR_SESSION|PMA_DBI_GETVAR_GLOBAL * @param mixed $link mysql link resource|object * @return mixed value for mysql server variable */function PMA_DBI_get_variable($var, $type = PMA_DBI_GETVAR_SESSION, $link = null){ if ($link === null) { if (isset($GLOBALS['userlink'])) { $link = $GLOBALS['userlink']; } else { return false; } } switch ($type) { case PMA_DBI_GETVAR_SESSION: $modifier = ' SESSION'; break; case PMA_DBI_GETVAR_GLOBAL: $modifier = ' GLOBAL'; break; default: $modifier = ''; } return PMA_DBI_fetch_value( 'SHOW' . $modifier . ' VARIABLES LIKE \'' . $var . '\';', 0, 1, $link);}/** * @uses ./libraries/charset_conversion.lib.php * @uses PMA_DBI_QUERY_STORE * @uses PMA_MYSQL_INT_VERSION to set it * @uses PMA_MYSQL_STR_VERSION to set it * @uses $_SESSION['PMA_MYSQL_INT_VERSION'] for caching * @uses $_SESSION['PMA_MYSQL_STR_VERSION'] for caching * @uses PMA_DBI_GETVAR_SESSION * @uses PMA_DBI_fetch_value() * @uses PMA_DBI_query() * @uses PMA_DBI_get_variable() * @uses $GLOBALS['collation_connection'] * @uses $GLOBALS['available_languages'] * @uses $GLOBALS['mysql_charset_map'] * @uses $GLOBALS['charset'] * @uses $GLOBALS['lang'] * @uses $GLOBALS['server'] * @uses $GLOBALS['cfg']['Lang'] * @uses defined() * @uses explode() * @uses sprintf() * @uses intval() * @uses define() * @uses defined() * @uses substr() * @uses count() * @param mixed $link mysql link resource|object * @param boolean $is_controluser */function PMA_DBI_postConnect($link, $is_controluser = false){ if (! defined('PMA_MYSQL_INT_VERSION')) { if (PMA_cacheExists('PMA_MYSQL_INT_VERSION', true)) { define('PMA_MYSQL_INT_VERSION', PMA_cacheGet('PMA_MYSQL_INT_VERSION', true)); define('PMA_MYSQL_STR_VERSION', PMA_cacheGet('PMA_MYSQL_STR_VERSION', true)); } else { $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', 50015); define('PMA_MYSQL_STR_VERSION', '5.00.15'); } PMA_cacheSet('PMA_MYSQL_INT_VERSION', PMA_MYSQL_INT_VERSION, true); PMA_cacheSet('PMA_MYSQL_STR_VERSION', PMA_MYSQL_STR_VERSION, true); } } if (! empty($GLOBALS['collation_connection'])) { $mysql_charset = explode('_', $GLOBALS['collation_connection']); PMA_DBI_query("SET NAMES '" . $mysql_charset[0] . "' COLLATE '" . $GLOBALS['collation_connection'] . "';", $link, PMA_DBI_QUERY_STORE); } else { PMA_DBI_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci';", $link, PMA_DBI_QUERY_STORE); }}/** * 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';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -