📄 database_interface.lib.php
字号:
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' * * $sql = 'SELECT `group`, `name` FROM `user`' * $users = PMA_DBI_fetch_result($sql, array('group', null), 'name'); * // produces * // $users['admin'][] = 'John Doe' * * $sql = 'SELECT `group`, `name` FROM `user`' * $users = PMA_DBI_fetch_result($sql, array('group', 'name'), 'id'); * // produces * // $users['admin']['John Doe'] = '123' * </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 (null === $key_index) { $result_target =& $result_target[]; continue; } 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 (null === $key_index) { $result_target =& $result_target[]; continue; } 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(){ return PMA_DBI_fetch_value('SHOW VARIABLES LIKE \'storage_engine\';', 0, 1);}/** * Get supported SQL compatibility modes * * @return array supported SQL compatibility modes */function PMA_DBI_getCompatibilities(){ $compats = array('NONE'); $compats[] = 'ANSI'; $compats[] = 'DB2'; $compats[] = 'MAXDB'; $compats[] = 'MYSQL323'; $compats[] = 'MYSQL40'; $compats[] = 'MSSQL'; $compats[] = 'ORACLE'; // removed; in MySQL 5.0.33, this produces exports that // can't be read by POSTGRESQL (see our bug #1596328) //$compats[] = 'POSTGRESQL'; $compats[] = 'TRADITIONAL'; return $compats;}/** * returns warnings for last query * * @uses $GLOBALS['userlink'] * @uses PMA_DBI_fetch_result() * @param resource mysql link $link mysql link resource * @return array warnings */function PMA_DBI_get_warnings($link = null){ if (empty($link)) { if (isset($GLOBALS['userlink'])) { $link = $GLOBALS['userlink']; } else { return array(); } } return PMA_DBI_fetch_result('SHOW WARNINGS', null, null, $link);}/** * returns true (int > 0) if current user is superuser * otherwise 0 * * @uses $_SESSION['is_superuser'] for caching * @uses $GLOBALS['userlink'] * @uses $GLOBALS['server'] * @uses PMA_DBI_try_query() * @uses PMA_DBI_QUERY_STORE * @return integer $is_superuser */function PMA_isSuperuser(){ if (PMA_cacheExists('is_superuser', true)) { return PMA_cacheGet('is_superuser', true); } // with mysql extension, when connection failed we don't have // a $userlink if (isset($GLOBALS['userlink'])) { $r = (bool) PMA_DBI_try_query('SELECT COUNT(*) FROM mysql.user', $GLOBALS['userlink'], PMA_DBI_QUERY_STORE); PMA_cacheSet('is_superuser', $r, true); } else { PMA_cacheSet('is_superuser', false, true); } return PMA_cacheGet('is_superuser', true);}/** * returns an array of PROCEDURE or FUNCTION names for a db * * @uses PMA_DBI_free_result() * @param string $db db name * @param string $which PROCEDURE | FUNCTION * @param resource $link mysql link * * @return array the procedure names or function names */function PMA_DBI_get_procedures_or_functions($db, $which, $link = null){ $shows = PMA_DBI_fetch_result('SHOW ' . $which . ' STATUS;', null, null, $link); $result = array(); foreach ($shows as $one_show) { if ($one_show['Db'] == $db && $one_show['Type'] == $which) { $result[] = $one_show['Name']; } } return($result);}/** * returns the definition of a specific PROCEDURE, FUNCTION or EVENT * * @uses PMA_DBI_fetch_value() * @param string $db db name * @param string $which PROCEDURE | FUNCTION | EVENT * @param string $name the procedure|function|event name * @param resource $link mysql link * * @return string the definition */function PMA_DBI_get_definition($db, $which, $name, $link = null){ $returned_field = array( 'PROCEDURE' => 'Create Procedure', 'FUNCTION' => 'Create Function', 'EVENT' => 'Create Event' ); $query = 'SHOW CREATE ' . $which . ' ' . PMA_backquote($db) . '.' . PMA_backquote($name); return(PMA_DBI_fetch_value($query, 0, $returned_field[$which]));}/** * returns details about the TRIGGERs of a specific table * * @uses PMA_DBI_fetch_result() * @param string $db db name * @param string $table table name * * @return array information about triggers (may be empty) */function PMA_DBI_get_triggers($db, $table){ $result = array(); // Note: in http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html // their example uses WHERE TRIGGER_SCHEMA='dbname' so let's use this // instead of WHERE EVENT_OBJECT_SCHEMA='dbname' $triggers = PMA_DBI_fetch_result("SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, ACTION_TIMING, ACTION_STATEMENT, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA= '" . PMA_sqlAddslashes($db,true) . "' and EVENT_OBJECT_TABLE = '" . PMA_sqlAddslashes($table, true) . "';"); if ($triggers) { $delimiter = '//'; foreach ($triggers as $trigger) { $one_result = array(); $one_result['name'] = $trigger['TRIGGER_NAME']; $one_result['action_timing'] = $trigger['ACTION_TIMING']; $one_result['event_manipulation'] = $trigger['EVENT_MANIPULATION']; $one_result['full_trigger_name'] = PMA_backquote($trigger['TRIGGER_SCHEMA']) . '.' . PMA_backquote($trigger['TRIGGER_NAME']); $one_result['drop'] = 'DROP TRIGGER IF EXISTS ' . $one_result['full_trigger_name']; $one_result['create'] = 'CREATE TRIGGER ' . $one_result['full_trigger_name'] . ' ' . $trigger['ACTION_TIMING']. ' ' . $trigger['EVENT_MANIPULATION'] . ' ON ' . PMA_backquote($trigger['EVENT_OBJECT_SCHEMA']) . '.' . PMA_backquote($trigger['EVENT_OBJECT_TABLE']) . "\n" . ' FOR EACH ROW ' . $trigger['ACTION_STATEMENT'] . "\n" . $delimiter . "\n"; $result[] = $one_result; } } return($result);}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -