本文整理汇总了PHP中PMA_Util::escapeMysqlWildcards方法的典型用法代码示例。如果您正苦于以下问题:PHP PMA_Util::escapeMysqlWildcards方法的具体用法?PHP PMA_Util::escapeMysqlWildcards怎么用?PHP PMA_Util::escapeMysqlWildcards使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PMA_Util
的用法示例。
在下文中一共展示了PMA_Util::escapeMysqlWildcards方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: PMA_addUserAndCreateDatabase
/**
* Prepares queries for adding users and
* also create database and return query and message
*
* @param boolean $_error whether user create or not
* @param string $real_sql_query SQL query for add a user
* @param string $sql_query SQL query to be displayed
* @param string $username username
* @param string $hostname host name
* @param string $dbname database name
*
* @return array $sql_query, $message
*/
function PMA_addUserAndCreateDatabase($_error, $real_sql_query, $sql_query, $username, $hostname, $dbname)
{
if ($_error || !empty($real_sql_query) && !$GLOBALS['dbi']->tryQuery($real_sql_query)) {
$_REQUEST['createdb-1'] = $_REQUEST['createdb-2'] = $_REQUEST['createdb-3'] = null;
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
} else {
$message = PMA_Message::success(__('You have added a new user.'));
}
if (isset($_REQUEST['createdb-1'])) {
// Create database with same name and grant all privileges
$q = 'CREATE DATABASE IF NOT EXISTS ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($username)) . ';';
$sql_query .= $q;
if (!$GLOBALS['dbi']->tryQuery($q)) {
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
}
/**
* Reload the navigation
*/
$GLOBALS['reload'] = true;
$GLOBALS['db'] = $username;
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($username))) . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!$GLOBALS['dbi']->tryQuery($q)) {
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
}
}
if (isset($_REQUEST['createdb-2'])) {
// Grant all privileges on wildcard name (username\_%)
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($username) . '\\_%') . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!$GLOBALS['dbi']->tryQuery($q)) {
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
}
}
if (isset($_REQUEST['createdb-3'])) {
// Grant all privileges on the specified database to the new user
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($dbname)) . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!$GLOBALS['dbi']->tryQuery($q)) {
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
}
}
return array($sql_query, $message);
}
示例2: getTablesFull
/**
* returns array of all tables in given db or dbs
* this function expects unquoted names:
* RIGHT: my_database
* WRONG: `my_database`
* WRONG: my\_database
* if $tbl_is_group is true, $table is used as filter for table names
*
* <code>
* $GLOBALS['dbi']->getTablesFull('my_database');
* $GLOBALS['dbi']->getTablesFull('my_database', 'my_table'));
* $GLOBALS['dbi']->getTablesFull('my_database', 'my_tables_', true));
* </code>
*
* @param string $database database
* @param string|bool $table table or false
* @param boolean $tbl_is_group $table is a table group
* @param mixed $link mysql link
* @param integer $limit_offset zero-based offset for the count
* @param boolean|integer $limit_count number of tables to return
* @param string $sort_by table attribute to sort by
* @param string $sort_order direction to sort (ASC or DESC)
* @param string $tble_type whether table or view
*
* @todo move into PMA_Table
*
* @return array list of tables in given db(s)
*/
public function getTablesFull($database, $table = false, $tbl_is_group = false, $link = null, $limit_offset = 0, $limit_count = false, $sort_by = 'Name', $sort_order = 'ASC', $tble_type = null)
{
if (true === $limit_count) {
$limit_count = $GLOBALS['cfg']['MaxTableList'];
}
// prepare and check parameters
if (!is_array($database)) {
$databases = array($database);
} else {
$databases = $database;
}
$tables = array();
// get table information from information_schema
if ($table) {
if (true === $tbl_is_group) {
$sql_where_table = 'AND t.`TABLE_NAME` LIKE \'' . PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($table)) . '%\'';
} else {
$sql_where_table = 'AND t.`TABLE_NAME` = \'' . PMA_Util::sqlAddSlashes($table) . '\'';
}
} else {
$sql_where_table = '';
}
if ($tble_type) {
if ($tble_type == 'view') {
if (PMA_DRIZZLE) {
$sql_where_table .= " AND t.`TABLE_TYPE` != 'BASE'";
} else {
$sql_where_table .= " AND t.`TABLE_TYPE` != 'BASE TABLE'";
}
} else {
if ($tble_type == 'table') {
if (PMA_DRIZZLE) {
$sql_where_table .= " AND t.`TABLE_TYPE` = 'BASE'";
} else {
$sql_where_table .= " AND t.`TABLE_TYPE` = 'BASE TABLE'";
}
}
}
}
// for PMA bc:
// `SCHEMA_FIELD_NAME` AS `SHOW_TABLE_STATUS_FIELD_NAME`
//
// on non-Windows servers,
// added BINARY in the WHERE clause to force a case sensitive
// comparison (if we are looking for the db Aa we don't want
// to find the db aa)
$this_databases = array_map('PMA_Util::sqlAddSlashes', $databases);
if (PMA_DRIZZLE) {
$engine_info = PMA_Util::cacheGet('drizzle_engines', true);
$stats_join = "LEFT JOIN (SELECT 0 NUM_ROWS) AS stat ON false";
if (isset($engine_info['InnoDB']) && $engine_info['InnoDB']['module_library'] == 'innobase') {
$stats_join = "LEFT JOIN data_dictionary.INNODB_SYS_TABLESTATS" . " stat ON (t.ENGINE = 'InnoDB' AND stat.NAME" . " = (t.TABLE_SCHEMA || '/') || t.TABLE_NAME)";
}
// data_dictionary.table_cache may not contain any data
// for some tables, it's just a table cache
// auto_increment == 0 is cast to NULL because currently
// (2011.03.13 GA)
// Drizzle doesn't provide correct value
$sql = "\n SELECT t.*,\n t.TABLE_SCHEMA AS `Db`,\n t.TABLE_NAME AS `Name`,\n t.TABLE_TYPE AS `TABLE_TYPE`,\n t.ENGINE AS `Engine`,\n t.ENGINE AS `Type`,\n t.TABLE_VERSION AS `Version`,-- VERSION\n t.ROW_FORMAT AS `Row_format`,\n coalesce(tc.ROWS, stat.NUM_ROWS)\n AS `Rows`,-- TABLE_ROWS,\n coalesce(tc.ROWS, stat.NUM_ROWS)\n AS `TABLE_ROWS`,\n tc.AVG_ROW_LENGTH AS `Avg_row_length`, -- AVG_ROW_LENGTH\n tc.TABLE_SIZE AS `Data_length`, -- DATA_LENGTH\n NULL AS `Max_data_length`, -- MAX_DATA_LENGTH\n NULL AS `Index_length`, -- INDEX_LENGTH\n NULL AS `Data_free`, -- DATA_FREE\n nullif(t.AUTO_INCREMENT, 0)\n AS `Auto_increment`,\n t.TABLE_CREATION_TIME AS `Create_time`, -- CREATE_TIME\n t.TABLE_UPDATE_TIME AS `Update_time`, -- UPDATE_TIME\n NULL AS `Check_time`, -- CHECK_TIME\n t.TABLE_COLLATION AS `Collation`,\n NULL AS `Checksum`, -- CHECKSUM\n NULL AS `Create_options`, -- CREATE_OPTIONS\n t.TABLE_COMMENT AS `Comment`\n FROM data_dictionary.TABLES t\n LEFT JOIN data_dictionary.TABLE_CACHE tc\n ON tc.TABLE_SCHEMA = t.TABLE_SCHEMA AND tc.TABLE_NAME\n = t.TABLE_NAME\n {$stats_join}\n WHERE t.TABLE_SCHEMA IN ('" . implode("', '", $this_databases) . "')\n " . $sql_where_table;
} else {
$sql = '
SELECT *,
`TABLE_SCHEMA` AS `Db`,
`TABLE_NAME` AS `Name`,
`TABLE_TYPE` AS `TABLE_TYPE`,
`ENGINE` AS `Engine`,
`ENGINE` AS `Type`,
`VERSION` AS `Version`,
`ROW_FORMAT` AS `Row_format`,
`TABLE_ROWS` AS `Rows`,
`AVG_ROW_LENGTH` AS `Avg_row_length`,
`DATA_LENGTH` AS `Data_length`,
//.........这里部分代码省略.........
示例3: array
/**
* @global bool whether selected db is information_schema
*/
$db_is_information_schema = false;
if (PMA_is_system_schema($db)) {
$is_show_stats = false;
$db_is_information_schema = true;
}
/**
* @global array information about tables in db
*/
$tables = array();
// When used in Nested table group mode,
// only show tables matching the given groupname
if (PMA_isValid($_REQUEST['tbl_group'])) {
$tbl_group_sql = ' LIKE "' . PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group']) . '%"';
} else {
$tbl_group_sql = '';
}
$tooltip_truename = array();
$tooltip_aliasname = array();
// Special speedup for newer MySQL Versions (in 4.0 format changed)
if (true === $cfg['SkipLockedTables']) {
$db_info_result = PMA_DBI_query('SHOW OPEN TABLES FROM ' . PMA_Util::backquote($db) . ';');
// Blending out tables in use
if ($db_info_result && PMA_DBI_num_rows($db_info_result) > 0) {
while ($tmp = PMA_DBI_fetch_row($db_info_result)) {
// if in use memorize tablename
if (preg_match('@in_use=[1-9]+@i', $tmp[1])) {
$sot_cache[$tmp[0]] = true;
}
示例4: getTablesFull
//.........这里部分代码省略.........
uksort($one_database_tables, 'strnatcasecmp');
if ($sort_order == 'DESC') {
$one_database_tables = array_reverse($one_database_tables);
}
$tables[$one_database_name] = $one_database_tables;
}
} else {
if ($sort_by == 'Data_length') {
// Size = Data_length + Index_length
foreach ($tables as $one_database_name => $one_database_tables) {
uasort($one_database_tables, function ($a, $b) {
$aLength = $a['Data_length'] + $a['Index_length'];
$bLength = $b['Data_length'] + $b['Index_length'];
return $aLength == $bLength ? 0 : $aLength < $bLength ? -1 : 1;
});
if ($sort_order == 'DESC') {
$one_database_tables = array_reverse($one_database_tables);
}
$tables[$one_database_name] = $one_database_tables;
}
}
}
}
// end (get information from table schema)
// If permissions are wrong on even one database directory,
// information_schema does not return any table info for any database
// this is why we fall back to SHOW TABLE STATUS even for MySQL >= 50002
if (empty($tables) && !PMA_DRIZZLE) {
foreach ($databases as $each_database) {
if ($table || true === $tbl_is_group || !empty($table_type)) {
$sql = 'SHOW TABLE STATUS FROM ' . PMA_Util::backquote($each_database) . ' WHERE';
$needAnd = false;
if ($table || true === $tbl_is_group) {
$sql .= " `Name` LIKE '" . PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($table, true)) . "%'";
$needAnd = true;
}
if (!empty($table_type)) {
if ($needAnd) {
$sql .= " AND";
}
if ($table_type == 'view') {
$sql .= " `Comment` = 'VIEW'";
} else {
if ($table_type == 'table') {
$sql .= " `Comment` != 'VIEW'";
}
}
}
} else {
$sql = 'SHOW TABLE STATUS FROM ' . PMA_Util::backquote($each_database);
}
$useStatusCache = false;
if (extension_loaded('apc') && isset($GLOBALS['cfg']['Server']['StatusCacheDatabases']) && !empty($GLOBALS['cfg']['Server']['StatusCacheLifetime'])) {
$statusCacheDatabases = (array) $GLOBALS['cfg']['Server']['StatusCacheDatabases'];
if (in_array($each_database, $statusCacheDatabases)) {
$useStatusCache = true;
}
}
$each_tables = null;
if ($useStatusCache) {
$cacheKey = 'phpMyAdmin_tableStatus_' . sha1($GLOBALS['cfg']['Server']['host'] . '_' . $sql);
$each_tables = apc_fetch($cacheKey);
}
if (!$each_tables) {
$each_tables = $this->fetchResult($sql, 'Name', null, $link);
}
示例5: getTablesWhenOpen
/**
* Gets the list of tables in the current db, taking into account
* that they might be "in use"
*
* @param string $db database name
* @param object $db_info_result result set
*
* @return array $tables list of tables
*
*/
public function getTablesWhenOpen($db, $db_info_result)
{
$tables = array();
while ($tmp = $GLOBALS['dbi']->fetchAssoc($db_info_result)) {
// if in use, memorize table name
if ($tmp['In_use'] > 0) {
$sot_cache[$tmp['Table']] = true;
}
}
$GLOBALS['dbi']->freeResult($db_info_result);
// is there at least one "in use" table?
if (isset($sot_cache)) {
$db_info_result = false;
$tblGroupSql = "";
$whereAdded = false;
if (PMA_isValid($_REQUEST['tbl_group'])) {
$group = PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group']);
$groupWithSeparator = PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group'] . $GLOBALS['cfg']['NavigationTreeTableSeparator']);
$tblGroupSql .= " WHERE (" . PMA_Util::backquote('Tables_in_' . $db) . " LIKE '" . $groupWithSeparator . "%'" . " OR " . PMA_Util::backquote('Tables_in_' . $db) . " LIKE '" . $group . "')";
$whereAdded = true;
}
if (PMA_isValid($_REQUEST['tbl_type'], array('table', 'view'))) {
$tblGroupSql .= $whereAdded ? " AND" : " WHERE";
if ($_REQUEST['tbl_type'] == 'view') {
$tblGroupSql .= " `Table_type` != 'BASE TABLE'";
} else {
$tblGroupSql .= " `Table_type` = 'BASE TABLE'";
}
}
$db_info_result = $GLOBALS['dbi']->query('SHOW FULL TABLES FROM ' . PMA_Util::backquote($db) . $tblGroupSql, null, PMA_DatabaseInterface::QUERY_STORE);
unset($tblGroupSql, $whereAdded);
if ($db_info_result && $GLOBALS['dbi']->numRows($db_info_result) > 0) {
while ($tmp = $GLOBALS['dbi']->fetchRow($db_info_result)) {
if (!isset($sot_cache[$tmp[0]])) {
$sts_result = $GLOBALS['dbi']->query("SHOW TABLE STATUS FROM " . PMA_Util::backquote($db) . " LIKE '" . PMA_Util::sqlAddSlashes($tmp[0], true) . "';");
$sts_tmp = $GLOBALS['dbi']->fetchAssoc($sts_result);
$GLOBALS['dbi']->freeResult($sts_result);
unset($sts_result);
$tableArray = $GLOBALS['dbi']->copyTableProperties(array($sts_tmp), $db);
$tables[$sts_tmp['Name']] = $tableArray[0];
} else {
// table in use
$tables[$tmp[0]] = array('TABLE_NAME' => $tmp[0], 'ENGINE' => '', 'TABLE_TYPE' => '', 'TABLE_ROWS' => 0);
}
}
// end while
if ($GLOBALS['cfg']['NaturalOrder']) {
uksort($tables, 'strnatcasecmp');
}
} elseif ($db_info_result) {
$GLOBALS['dbi']->freeResult($db_info_result);
}
unset($sot_cache);
}
return $tables;
}
示例6: getTablesFull
//.........这里部分代码省略.........
foreach ($tables as $one_database_name => $one_database_tables) {
uksort($one_database_tables, 'strnatcasecmp');
if ($sort_order == 'DESC') {
$one_database_tables = array_reverse($one_database_tables);
}
$tables[$one_database_name] = $one_database_tables;
}
} else {
if ($sort_by == 'Data_length') {
// Size = Data_length + Index_length
foreach ($tables as $one_database_name => $one_database_tables) {
uasort($one_database_tables, function ($a, $b) {
$aLength = $a['Data_length'] + $a['Index_length'];
$bLength = $b['Data_length'] + $b['Index_length'];
return $aLength == $bLength ? 0 : $aLength < $bLength ? -1 : 1;
});
if ($sort_order == 'DESC') {
$one_database_tables = array_reverse($one_database_tables);
}
$tables[$one_database_name] = $one_database_tables;
}
}
}
// end (get information from table schema)
// If permissions are wrong on even one database directory,
// information_schema does not return any table info for any database
// this is why we fall back to SHOW TABLE STATUS even for MySQL >= 50002
if (empty($tables) && !PMA_DRIZZLE) {
foreach ($databases as $each_database) {
if ($table || true === $tbl_is_group || $tble_type) {
$sql = 'SHOW TABLE STATUS FROM ' . PMA_Util::backquote($each_database) . ' WHERE';
$needAnd = false;
if ($table || true === $tbl_is_group) {
$sql .= " `Name` LIKE '" . PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($table, true)) . "%'";
$needAnd = true;
}
if ($tble_type) {
if ($needAnd) {
$sql .= " AND";
}
if ($tble_type == 'view') {
$sql .= " `Comment` = 'VIEW'";
} else {
if ($tble_type == 'table') {
$sql .= " `Comment` != 'VIEW'";
}
}
}
} else {
$sql = 'SHOW TABLE STATUS FROM ' . PMA_Util::backquote($each_database);
}
$useStatusCache = false;
if (extension_loaded('apc') && isset($GLOBALS['cfg']['Server']['StatusCacheDatabases']) && !empty($GLOBALS['cfg']['Server']['StatusCacheLifetime'])) {
$statusCacheDatabases = (array) $GLOBALS['cfg']['Server']['StatusCacheDatabases'];
if (in_array($each_database, $statusCacheDatabases)) {
$useStatusCache = true;
}
}
$each_tables = null;
if ($useStatusCache) {
$cacheKey = 'phpMyAdmin_tableStatus_' . sha1($GLOBALS['cfg']['Server']['host'] . '_' . $sql);
$each_tables = apc_fetch($cacheKey);
}
if (!$each_tables) {
$each_tables = $this->fetchResult($sql, 'Name', null, $link);
}
示例7: while
// Blending out tables in use
if ($db_info_result && $GLOBALS['dbi']->numRows($db_info_result) > 0) {
while ($tmp = $GLOBALS['dbi']->fetchAssoc($db_info_result)) {
// if in use, memorize table name
if ($tmp['In_use'] > 0) {
$sot_cache[$tmp['Table']] = true;
}
}
$GLOBALS['dbi']->freeResult($db_info_result);
if (isset($sot_cache)) {
$db_info_result = false;
$tblGroupSql = "";
$whereAdded = false;
if (PMA_isValid($_REQUEST['tbl_group'])) {
$group = PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group']);
$groupWithSeparator = PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group'] . $GLOBALS['cfg']['NavigationTreeTableSeparator']);
$tblGroupSql .= " WHERE (" . PMA_Util::backquote('Tables_in_' . $db) . " LIKE '" . $groupWithSeparator . "%'" . " OR " . PMA_Util::backquote('Tables_in_' . $db) . " LIKE '" . $group . "')";
$whereAdded = true;
}
if (PMA_isValid($_REQUEST['tbl_type'], array('table', 'view'))) {
$tblGroupSql .= $whereAdded ? " AND" : " WHERE";
if ($_REQUEST['tbl_type'] == 'view') {
$tblGroupSql .= " `Table_type` != 'BASE TABLE'";
} else {
$tblGroupSql .= " `Table_type` = 'BASE TABLE'";
}
}
$db_info_result = $GLOBALS['dbi']->query('SHOW FULL TABLES FROM ' . PMA_Util::backquote($db) . $tblGroupSql, null, PMA_DatabaseInterface::QUERY_STORE);
unset($tblGroupSql, $whereAdded);
if ($db_info_result && $GLOBALS['dbi']->numRows($db_info_result) > 0) {
while ($tmp = $GLOBALS['dbi']->fetchRow($db_info_result)) {
示例8: testEscape
/**
* PMA_Util::escapeMysqlWildcards tests
*
* @param string $a String to escape
* @param string $b Expected value
*
* @return void
*
* @dataProvider escapeDataProvider
*/
public function testEscape($a, $b)
{
$this->assertEquals($a, PMA_Util::escapeMysqlWildcards($b));
}
示例9: PMA_addUserAndCreateDatabase
/**
* Prepares queries for adding users and
* also create database and return query and message
*
* @param boolean $_error whether user create or not
* @param string $real_sql_query SQL query for add a user
* @param string $sql_query SQL query to be displayed
* @param string $username username
* @param string $hostname host name
*
* @return array $sql_query, $message
*/
function PMA_addUserAndCreateDatabase($_error, $real_sql_query, $sql_query, $username, $hostname)
{
if ($_error || !PMA_DBI_try_query($real_sql_query)) {
$_REQUEST['createdb-1'] = $_REQUEST['createdb-2'] = $_REQUEST['createdb-3'] = false;
$message = PMA_Message::rawError(PMA_DBI_getError());
} else {
$message = PMA_Message::success(__('You have added a new user.'));
}
if (isset($_REQUEST['createdb-1'])) {
// Create database with same name and grant all privileges
$q = 'CREATE DATABASE IF NOT EXISTS ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($username)) . ';';
$sql_query .= $q;
if (!PMA_DBI_try_query($q)) {
$message = PMA_Message::rawError(PMA_DBI_getError());
}
/**
* If we are not in an Ajax request, we can't reload navigation now
*/
if ($GLOBALS['is_ajax_request'] != true) {
// this is needed in case tracking is on:
$GLOBALS['db'] = $username;
$GLOBALS['reload'] = true;
echo PMA_Util::getReloadNavigationScript();
}
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($username))) . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!PMA_DBI_try_query($q)) {
$message = PMA_Message::rawError(PMA_DBI_getError());
}
}
if (isset($_REQUEST['createdb-2'])) {
// Grant all privileges on wildcard name (username\_%)
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($username) . '\\_%') . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!PMA_DBI_try_query($q)) {
$message = PMA_Message::rawError(PMA_DBI_getError());
}
}
if (isset($_REQUEST['createdb-3'])) {
// Grant all privileges on the specified database to the new user
$q = 'GRANT ALL PRIVILEGES ON ' . PMA_Util::backquote(PMA_Util::sqlAddSlashes($dbname)) . '.* TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
$sql_query .= $q;
if (!PMA_DBI_try_query($q)) {
$message = PMA_Message::rawError(PMA_DBI_getError());
}
}
return array($sql_query, $message);
}
示例10: array
/**
* @global bool whether selected db is information_schema
*/
$db_is_information_schema = false;
if (PMA_is_system_schema($db)) {
$is_show_stats = false;
$db_is_information_schema = true;
}
/**
* @global array information about tables in db
*/
$tables = array();
// When used in Nested table group mode,
// only show tables matching the given groupname
if (PMA_isValid($tbl_group)) {
$tbl_group_sql = ' LIKE "' . PMA_Util::escapeMysqlWildcards($tbl_group) . '%"';
} else {
$tbl_group_sql = '';
}
$tooltip_truename = array();
$tooltip_aliasname = array();
// Special speedup for newer MySQL Versions (in 4.0 format changed)
if (true === $cfg['SkipLockedTables']) {
$db_info_result = PMA_DBI_query('SHOW OPEN TABLES FROM ' . PMA_Util::backquote($db) . ';');
// Blending out tables in use
if ($db_info_result && PMA_DBI_num_rows($db_info_result) > 0) {
while ($tmp = PMA_DBI_fetch_row($db_info_result)) {
// if in use memorize tablename
if (preg_match('@in_use=[1-9]+@i', $tmp[1])) {
$sot_cache[$tmp[0]] = true;
}
示例11: while
$db_info_result = $GLOBALS['dbi']->query('SHOW OPEN TABLES FROM ' . PMA_Util::backquote($db) . ';');
// Blending out tables in use
if ($db_info_result && $GLOBALS['dbi']->numRows($db_info_result) > 0) {
while ($tmp = $GLOBALS['dbi']->fetchAssoc($db_info_result)) {
// if in use, memorize table name
if ($tmp['In_use'] > 0) {
$sot_cache[$tmp['Table']] = true;
}
}
$GLOBALS['dbi']->freeResult($db_info_result);
if (isset($sot_cache)) {
$db_info_result = false;
$tblGroupSql = "";
$whereAdded = false;
if (PMA_isValid($_REQUEST['tbl_group'])) {
$tblGroupSql .= " WHERE " . PMA_Util::backquote('Tables_in_' . $db) . " LIKE '" . PMA_Util::escapeMysqlWildcards($_REQUEST['tbl_group']) . "%'";
$whereAdded = true;
}
if (PMA_isValid($_REQUEST['tbl_type'], array('table', 'view'))) {
$tblGroupSql .= $whereAdded ? " AND" : " WHERE";
if ($_REQUEST['tbl_type'] == 'view') {
$tblGroupSql .= " `Table_type` != 'BASE TABLE'";
} else {
$tblGroupSql .= " `Table_type` = 'BASE TABLE'";
}
}
$db_info_result = $GLOBALS['dbi']->query('SHOW FULL TABLES FROM ' . PMA_Util::backquote($db) . $tblGroupSql, null, PMA_DatabaseInterface::QUERY_STORE);
unset($tblGroupSql, $whereAdded);
if ($db_info_result && $GLOBALS['dbi']->numRows($db_info_result) > 0) {
while ($tmp = $GLOBALS['dbi']->fetchRow($db_info_result)) {
if (!isset($sot_cache[$tmp[0]])) {
示例12: _getTableCondition
/**
* returns a segment of the SQL WHERE clause regarding table name and type
*
* @param string|bool $table table or false
* @param boolean $tbl_is_group $table is a table group
* @param string $table_type whether table or view
*
* @return string a segment of the WHERE clause
*/
private function _getTableCondition($table, $tbl_is_group, $table_type)
{
// get table information from information_schema
if ($table && is_string($table)) {
if (true === $tbl_is_group) {
$sql_where_table = 'AND t.`TABLE_NAME` LIKE \'' . PMA_Util::escapeMysqlWildcards(PMA_Util::sqlAddSlashes($table)) . '%\'';
} else {
$sql_where_table = 'AND t.`TABLE_NAME` = \'' . PMA_Util::sqlAddSlashes($table) . '\'';
}
} else {
$sql_where_table = '';
}
if ($table_type) {
if ($table_type == 'view') {
if (PMA_DRIZZLE) {
$sql_where_table .= " AND t.`TABLE_TYPE` != 'BASE'";
} else {
$sql_where_table .= " AND t.`TABLE_TYPE` != 'BASE TABLE'";
}
} else {
if ($table_type == 'table') {
if (PMA_DRIZZLE) {
$sql_where_table .= " AND t.`TABLE_TYPE` = 'BASE'";
} else {
$sql_where_table .= " AND t.`TABLE_TYPE` = 'BASE TABLE'";
}
}
}
}
return $sql_where_table;
}