From 64d616c0cc6a4e372927f5c786c540d69957c736 Mon Sep 17 00:00:00 2001 From: jakubvrana Date: Tue, 22 Sep 2009 10:51:40 +0000 Subject: [PATCH] Rename get_dbh to connection git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1124 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- adminer/call.inc.php | 14 ++++----- adminer/create.inc.php | 20 ++++++------ adminer/database.inc.php | 12 +++---- adminer/db.inc.php | 6 ++-- adminer/download.inc.php | 2 +- adminer/dump.inc.php | 28 ++++++++--------- adminer/edit.inc.php | 2 +- adminer/event.inc.php | 12 +++---- adminer/include/adminer.inc.php | 14 ++++----- adminer/include/auth.inc.php | 8 ++--- adminer/include/connect.inc.php | 8 ++--- adminer/include/editing.inc.php | 18 +++++------ adminer/include/export.inc.php | 32 +++++++++---------- adminer/include/functions.inc.php | 30 +++++++++--------- adminer/include/mysql.inc.php | 52 +++++++++++++++---------------- adminer/privileges.inc.php | 4 +-- adminer/processlist.inc.php | 2 +- adminer/select.inc.php | 16 +++++----- adminer/sql.inc.php | 22 ++++++------- adminer/table.inc.php | 8 ++--- adminer/trigger.inc.php | 2 +- adminer/user.inc.php | 16 +++++----- adminer/variables.inc.php | 2 +- changes.txt | 7 +++++ editor/include/adminer.inc.php | 34 ++++++++++---------- editor/include/connect.inc.php | 2 +- editor/include/export.inc.php | 4 +-- todo.txt | 2 +- 28 files changed, 193 insertions(+), 186 deletions(-) diff --git a/adminer/call.inc.php b/adminer/call.inc.php index 967af20f..77464ffa 100644 --- a/adminer/call.inc.php +++ b/adminer/call.inc.php @@ -23,25 +23,25 @@ if (!$error && $_POST) { $val = "''"; } if (isset($out[$key])) { - $dbh->query("SET @" . idf_escape($field["field"]) . " = $val"); + $connection->query("SET @" . idf_escape($field["field"]) . " = $val"); } } $call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val); } - $result = $dbh->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")"); + $result = $connection->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")"); if (!$result) { - echo "

" . h($dbh->error) . "\n"; + echo "

" . h($connection->error) . "\n"; } else { do { - $result = $dbh->store_result(); + $result = $connection->store_result(); if (is_object($result)) { select($result); } else { - echo "

" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "\n"; + echo "

" . lang('Routine has been called, %d row(s) affected.', $connection->affected_rows) . "\n"; } - } while ($dbh->next_result()); + } while ($connection->next_result()); if ($out) { - select($dbh->query("SELECT " . implode(", ", $out))); + select($connection->query("SELECT " . implode(", ", $out))); } } } diff --git a/adminer/create.inc.php b/adminer/create.inc.php index 73c4d60a..8eb0ea5b 100644 --- a/adminer/create.inc.php +++ b/adminer/create.inc.php @@ -62,9 +62,9 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] $orig_field = next($orig_fields); } } - $status = "COMMENT=" . $dbh->quote($_POST["Comment"]) - . ($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? " ENGINE=" . $dbh->quote($_POST["Engine"]) : "") - . ($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? " COLLATE " . $dbh->quote($_POST["Collation"]) : "") + $status = "COMMENT=" . $connection->quote($_POST["Comment"]) + . ($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? " ENGINE=" . $connection->quote($_POST["Engine"]) : "") + . ($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? " COLLATE " . $connection->quote($_POST["Collation"]) : "") . (strlen($_POST["auto_increment"]) ? " AUTO_INCREMENT=" . intval($_POST["auto_increment"]) : "") ; if (in_array($_POST["partition_by"], $partition_by)) { @@ -79,7 +79,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] ? " (" . implode(",", $partitions) . "\n)" : ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : "") ); - } elseif ($dbh->server_info >= 5.1 && strlen($TABLE)) { + } elseif ($connection->server_info >= 5.1 && strlen($TABLE)) { $status .= "\nREMOVE PARTITIONING"; } $location = ME . "table=" . urlencode($_POST["name"]); @@ -94,7 +94,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] page_header((strlen($TABLE) ? lang('Alter table') : lang('Create table')), $error, array("table" => $TABLE), $TABLE); $engines = array(); -$result = $dbh->query("SHOW ENGINES"); +$result = $connection->query("SHOW ENGINES"); while ($row = $result->fetch_assoc()) { if ($row["Support"] == "YES" || $row["Support"] == "DEFAULT") { $engines[] = $row["Engine"]; @@ -123,13 +123,13 @@ if ($_POST) { } $row["fields"][] = $field; } - if ($dbh->server_info >= 5.1) { - $from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . $dbh->quote(DB) . " AND TABLE_NAME = " . $dbh->quote($TABLE); - $result = $dbh->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1"); + if ($connection->server_info >= 5.1) { + $from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . $connection->quote(DB) . " AND TABLE_NAME = " . $connection->quote($TABLE); + $result = $connection->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1"); list($row["partition_by"], $row["partitions"], $row["partition"]) = $result->fetch_row(); $row["partition_names"] = array(); $row["partition_values"] = array(); - $result = $dbh->query("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $from AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION"); + $result = $connection->query("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $from AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION"); while ($row1 = $result->fetch_assoc()) { $row["partition_names"][] = $row1["PARTITION_NAME"]; $row["partition_values"][] = $row1["PARTITION_DESCRIPTION"]; @@ -173,7 +173,7 @@ document.write('

diff --git a/adminer/database.inc.php b/adminer/database.inc.php index a80c4fd6..9d67f162 100644 --- a/adminer/database.inc.php +++ b/adminer/database.inc.php @@ -11,14 +11,14 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c $last = ""; foreach ($dbs as $db) { if (count($dbs) == 1 || strlen($db)) { // ignore empty lines but always try to create single database - if (!queries("CREATE DATABASE " . idf_escape($db) . ($_POST["collation"] ? " COLLATE " . $dbh->quote($_POST["collation"]) : ""))) { + if (!queries("CREATE DATABASE " . idf_escape($db) . ($_POST["collation"] ? " COLLATE " . $connection->quote($_POST["collation"]) : ""))) { $failed = true; } $last = $db; } } if (query_redirect(queries(), ME . "db=" . urlencode($last), lang('Database has been created.'), !strlen(DB), false, $failed)) { - $result = $dbh->query("SHOW TABLES"); + $result = $connection->query("SHOW TABLES"); while ($row = $result->fetch_row()) { if (!queries("RENAME TABLE " . idf_escape($row[0]) . " TO " . idf_escape($_POST["name"]) . "." . idf_escape($row[0]))) { break; @@ -34,7 +34,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c if (!$_POST["collation"]) { redirect(substr(ME, 0, -1)); } - query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE " . $dbh->quote($_POST["collation"]), substr(ME, 0, -1), lang('Database has been altered.')); + query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE " . $connection->quote($_POST["collation"]), substr(ME, 0, -1), lang('Database has been altered.')); } } @@ -48,15 +48,15 @@ if ($_POST) { $collate = $_POST["collation"]; } elseif (!strlen(DB)) { // propose database name with limited privileges - $result = $dbh->query("SHOW GRANTS"); + $result = $connection->query("SHOW GRANTS"); while ($row = $result->fetch_row()) { if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) { $name = stripcslashes(idf_unescape($match[2])); break; } } -} elseif (($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape(DB)))) { - $create = $dbh->result($result, 1); +} elseif (($result = $connection->query("SHOW CREATE DATABASE " . idf_escape(DB)))) { + $create = $connection->result($result, 1); if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) { $collate = $match[1]; } elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) { diff --git a/adminer/db.inc.php b/adminer/db.inc.php index ee1ad064..6e45de49 100644 --- a/adminer/db.inc.php +++ b/adminer/db.inc.php @@ -75,10 +75,10 @@ if (!$table_status) { echo "\n"; } -if ($dbh->server_info >= 5) { +if ($connection->server_info >= 5) { echo '

' . lang('Create view') . "\n"; echo "

" . lang('Routines') . "

\n"; - $result = $dbh->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . $dbh->quote(DB)); + $result = $connection->query("SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . $connection->quote(DB)); if ($result->num_rows) { echo "\n"; while ($row = $result->fetch_assoc()) { @@ -92,7 +92,7 @@ if ($dbh->server_info >= 5) { echo '

' . lang('Create procedure') . ' ' . lang('Create function') . "\n"; } -if ($dbh->server_info >= 5.1 && ($result = $dbh->query("SHOW EVENTS"))) { +if ($connection->server_info >= 5.1 && ($result = $connection->query("SHOW EVENTS"))) { echo "

" . lang('Events') . "

\n"; if ($result->num_rows) { echo "
\n"; diff --git a/adminer/download.inc.php b/adminer/download.inc.php index 15b1987e..dcf39415 100644 --- a/adminer/download.inc.php +++ b/adminer/download.inc.php @@ -2,5 +2,5 @@ $TABLE = $_GET["download"]; header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$TABLE-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); -echo $dbh->result($dbh->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($TABLE) . " WHERE " . where($_GET) . " LIMIT 1")); +echo $connection->result($connection->query("SELECT " . idf_escape($_GET["field"]) . " FROM " . idf_escape($TABLE) . " WHERE " . where($_GET) . " LIMIT 1")); exit; // don't output footer diff --git a/adminer/dump.inc.php b/adminer/dump.inc.php index 02cdcd87..a90c44a0 100644 --- a/adminer/dump.inc.php +++ b/adminer/dump.inc.php @@ -7,7 +7,7 @@ if ($_POST) { dump("-- Adminer $VERSION dump SET NAMES utf8; SET foreign_key_checks = 0; -SET time_zone = " . $dbh->quote($dbh->result($dbh->query("SELECT @@time_zone"))) . "; +SET time_zone = " . $connection->quote($connection->result($connection->query("SELECT @@time_zone"))) . "; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; "); @@ -15,31 +15,31 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; $style = $_POST["db_style"]; foreach ((strlen(DB) ? array(DB) : (array) $_POST["databases"]) as $db) { - if ($dbh->select_db($db)) { - if ($_POST["format"] == "sql" && ereg('CREATE', $style) && ($result = $dbh->query("SHOW CREATE DATABASE " . idf_escape($db)))) { + if ($connection->select_db($db)) { + if ($_POST["format"] == "sql" && ereg('CREATE', $style) && ($result = $connection->query("SHOW CREATE DATABASE " . idf_escape($db)))) { if ($style == "DROP+CREATE") { dump("DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n"); } - $create = $dbh->result($result, 1); + $create = $connection->result($result, 1); dump(($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n"); } if ($style && $_POST["format"] == "sql") { dump("USE " . idf_escape($db) . ";\n" . ($style == "CREATE+ALTER" ? "SET @adminer_alter = '';\n" : "") . "\n"); $out = ""; - if ($dbh->server_info >= 5) { + if ($connection->server_info >= 5) { foreach (array("FUNCTION", "PROCEDURE") as $routine) { - $result = $dbh->query("SHOW $routine STATUS WHERE Db = " . $dbh->quote($db)); + $result = $connection->query("SHOW $routine STATUS WHERE Db = " . $connection->quote($db)); while ($row = $result->fetch_assoc()) { $out .= ($style != 'DROP+CREATE' ? "DROP $routine IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "") - . $dbh->result($dbh->query("SHOW CREATE $routine " . idf_escape($row["Name"])), 2) . ";;\n\n"; + . $connection->result($connection->query("SHOW CREATE $routine " . idf_escape($row["Name"])), 2) . ";;\n\n"; } } } - if ($dbh->server_info >= 5.1) { - $result = $dbh->query("SHOW EVENTS"); + if ($connection->server_info >= 5.1) { + $result = $connection->query("SHOW EVENTS"); while ($row = $result->fetch_assoc()) { $out .= ($style != 'DROP+CREATE' ? "DROP EVENT IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "") - . $dbh->result($dbh->query("SHOW CREATE EVENT " . idf_escape($row["Name"])), 3) . ";;\n\n"; + . $connection->result($connection->query("SHOW CREATE EVENT " . idf_escape($row["Name"])), 3) . ";;\n\n"; } } if ($out) { @@ -97,11 +97,11 @@ CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN FETCH tables INTO _table_name, _engine, _table_collation, _table_comment; IF NOT done THEN CASE _table_name"); - $result = $dbh->query($query); + $result = $connection->query($query); while ($row = $result->fetch_assoc()) { - $comment = $dbh->quote($row["ENGINE"] == "InnoDB" ? preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["TABLE_COMMENT"]) : $row["TABLE_COMMENT"]); + $comment = $connection->quote($row["ENGINE"] == "InnoDB" ? preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["TABLE_COMMENT"]) : $row["TABLE_COMMENT"]); dump(" - WHEN " . $dbh->quote($row["TABLE_NAME"]) . " THEN + WHEN " . $connection->quote($row["TABLE_NAME"]) . " THEN " . (isset($row["ENGINE"]) ? "IF _engine != '$row[ENGINE]' OR _table_collation != '$row[TABLE_COLLATION]' OR _table_comment != $comment THEN ALTER TABLE " . idf_escape($row["TABLE_NAME"]) . " ENGINE=$row[ENGINE] COLLATE=$row[TABLE_COLLATION] COMMENT=$comment; END IF" : "BEGIN END") . ";"); @@ -137,7 +137,7 @@ page_header(lang('Export'), "", (strlen($_GET["export"]) ? array("table" => $_GE $db_style = array('', 'USE', 'DROP+CREATE', 'CREATE'); $table_style = array('', 'DROP+CREATE', 'CREATE'); $data_style = array('', 'TRUNCATE+INSERT', 'INSERT', 'INSERT+UPDATE'); -if ($dbh->server_info >= 5) { +if ($connection->server_info >= 5) { $db_style[] = 'CREATE+ALTER'; $table_style[] = 'CREATE+ALTER'; } diff --git a/adminer/edit.inc.php b/adminer/edit.inc.php index 6c790828..23d39986 100644 --- a/adminer/edit.inc.php +++ b/adminer/edit.inc.php @@ -56,7 +56,7 @@ if ($_POST["save"]) { } $row = array(); if ($select) { - $result = $dbh->query("SELECT " . implode(", ", $select) . " FROM " . idf_escape($TABLE) . " WHERE $where " . (isset($_GET["select"]) ? "HAVING COUNT(*) = 1" : "LIMIT 1")); + $result = $connection->query("SELECT " . implode(", ", $select) . " FROM " . idf_escape($TABLE) . " WHERE $where " . (isset($_GET["select"]) ? "HAVING COUNT(*) = 1" : "LIMIT 1")); $row = $result->fetch_assoc(); } } diff --git a/adminer/event.inc.php b/adminer/event.inc.php index a9c37563..e00cfc50 100644 --- a/adminer/event.inc.php +++ b/adminer/event.inc.php @@ -8,17 +8,17 @@ if ($_POST && !$error) { query_redirect("DROP EVENT " . idf_escape($EVENT), substr(ME, 0, -1), lang('Event has been dropped.')); } elseif (in_array($_POST["INTERVAL_FIELD"], $intervals) && isset($statuses[$_POST["STATUS"]])) { $schedule = "\nON SCHEDULE " . ($_POST["INTERVAL_VALUE"] - ? "EVERY " . $dbh->quote($_POST["INTERVAL_VALUE"]) . " $_POST[INTERVAL_FIELD]" - . ($_POST["STARTS"] ? " STARTS " . $dbh->quote($_POST["STARTS"]) : "") - . ($_POST["ENDS"] ? " ENDS " . $dbh->quote($_POST["ENDS"]) : "") //! ALTER EVENT doesn't drop ENDS - MySQL bug #39173 - : "AT " . $dbh->quote($_POST["STARTS"]) + ? "EVERY " . $connection->quote($_POST["INTERVAL_VALUE"]) . " $_POST[INTERVAL_FIELD]" + . ($_POST["STARTS"] ? " STARTS " . $connection->quote($_POST["STARTS"]) : "") + . ($_POST["ENDS"] ? " ENDS " . $connection->quote($_POST["ENDS"]) : "") //! ALTER EVENT doesn't drop ENDS - MySQL bug #39173 + : "AT " . $connection->quote($_POST["STARTS"]) ) . " ON COMPLETION" . ($_POST["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE" ; query_redirect((strlen($EVENT) ? "ALTER EVENT " . idf_escape($EVENT) . $schedule . ($EVENT != $_POST["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($_POST["EVENT_NAME"]) : "") : "CREATE EVENT " . idf_escape($_POST["EVENT_NAME"]) . $schedule - ) . "\n" . $statuses[$_POST["STATUS"]] . " COMMENT " . $dbh->quote($_POST["EVENT_COMMENT"]) + ) . "\n" . $statuses[$_POST["STATUS"]] . " COMMENT " . $connection->quote($_POST["EVENT_COMMENT"]) . " DO\n$_POST[EVENT_DEFINITION]" , substr(ME, 0, -1), (strlen($EVENT) ? lang('Event has been altered.') : lang('Event has been created.'))); } @@ -30,7 +30,7 @@ $row = array(); if ($_POST) { $row = $_POST; } elseif (strlen($EVENT)) { - $result = $dbh->query("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = " . $dbh->quote(DB) . " AND EVENT_NAME = " . $dbh->quote($EVENT)); + $result = $connection->query("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = " . $connection->quote(DB) . " AND EVENT_NAME = " . $connection->quote($EVENT)); $row = $result->fetch_assoc(); } ?> diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index da2e2a0b..6d1cc457 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -278,11 +278,11 @@ class Adminer { * @return array expressions to join by AND */ function selectSearchProcess($fields, $indexes) { - global $dbh; + global $connection; $return = array(); foreach ($indexes as $i => $index) { if ($index["type"] == "FULLTEXT" && strlen($_GET["fulltext"][$i])) { - $return[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST (" . $dbh->quote($_GET["fulltext"][$i]) . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")"; + $return[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST (" . $connection->quote($_GET["fulltext"][$i]) . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")"; } } foreach ((array) $_GET["where"] as $val) { @@ -404,9 +404,9 @@ class Adminer { * @return string expression to use in a query */ function processInput($field, $value, $function = "") { - global $dbh; + global $connection; $name = $field["field"]; - $return = $dbh->quote($value); + $return = $connection->quote($value); if (ereg('^(now|uuid)$', $function)) { $return = "$function()"; } elseif (ereg('^[+-]$', $function)) { @@ -470,9 +470,9 @@ class Adminer { * @return null */ function printTables($missing) { - global $dbh; - if ($missing != "db" && strlen(DB) && $dbh->select_db(DB)) { - $result = $dbh->query("SHOW TABLES"); + global $connection; + if ($missing != "db" && strlen(DB) && $connection->select_db(DB)) { + $result = $connection->query("SHOW TABLES"); if (!$result->num_rows) { echo "

" . lang('No tables.') . "\n"; } else { diff --git a/adminer/include/auth.inc.php b/adminer/include/auth.inc.php index ce5eadd7..e7086937 100644 --- a/adminer/include/auth.inc.php +++ b/adminer/include/auth.inc.php @@ -31,10 +31,10 @@ if (isset($_POST["server"])) { } function auth_error($exception = null) { - global $ignore, $dbh, $adminer; + global $ignore, $connection, $adminer; $username = $_SESSION["usernames"][$_GET["server"]]; unset($_SESSION["usernames"][$_GET["server"]]); - page_header(lang('Login'), (isset($username) ? h($exception ? $exception->getMessage() : (is_string($dbh) ? $dbh : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Session support must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null); + page_header(lang('Login'), (isset($username) ? h($exception ? $exception->getMessage() : (is_string($connection) ? $connection : lang('Invalid credentials.'))) : (isset($_POST["server"]) ? lang('Session support must be enabled.') : ($_POST ? lang('Session expired, please login again.') : ""))), null); echo "
\n"; $adminer->loginForm($username); echo "

\n"; @@ -50,8 +50,8 @@ $username = &$_SESSION["usernames"][$_GET["server"]]; if (!isset($username)) { $username = $_GET["username"]; // default username can be passed in URL } -$dbh = (isset($username) ? connect() : ''); -if (is_string($dbh) || !$adminer->login($username, $_SESSION["passwords"][$_GET["server"]])) { +$connection = (isset($username) ? connect() : ''); +if (is_string($connection) || !$adminer->login($username, $_SESSION["passwords"][$_GET["server"]])) { auth_error(); exit; } diff --git a/adminer/include/connect.inc.php b/adminer/include/connect.inc.php index 550d31a4..d772208b 100644 --- a/adminer/include/connect.inc.php +++ b/adminer/include/connect.inc.php @@ -1,6 +1,6 @@ $val) { echo "

$val\n"; } - echo "

" . lang('MySQL version: %s through PHP extension %s', "server_info < 4.1 ? " class='binary'" : "") . ">$dbh->server_info", "$dbh->extension") . "\n"; - echo "

" . lang('Logged as: %s', "" . h($dbh->result($dbh->query("SELECT USER()"))) . "") . "\n"; + echo "

" . lang('MySQL version: %s through PHP extension %s', "server_info < 4.1 ? " class='binary'" : "") . ">$connection->server_info", "$connection->extension") . "\n"; + echo "

" . lang('Logged as: %s', "" . h($connection->result($connection->query("SELECT USER()"))) . "") . "\n"; } page_footer("db"); } -if (!(strlen(DB) ? $dbh->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]))) { +if (!(strlen(DB) ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]))) { if (strlen(DB)) { unset($_SESSION["databases"][$_GET["server"]]); } diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index 77c9dffc..7355f0b1 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -4,7 +4,7 @@ * @param Min_DB connection to examine indexes * @return null */ -function select($result, $dbh2 = null) { +function select($result, $connection2 = null) { if (!$result->num_rows) { echo "

" . lang('No rows.') . "\n"; } else { @@ -24,7 +24,7 @@ function select($result, $dbh2 = null) { if (!isset($indexes[$field->orgtable])) { // find primary key in each table $indexes[$field->orgtable] = array(); - foreach (indexes($field->orgtable, $dbh2) as $index) { + foreach (indexes($field->orgtable, $connection2) as $index) { if ($index["type"] == "PRIMARY") { $indexes[$field->orgtable] = array_flip($index["columns"]); break; @@ -112,21 +112,21 @@ function process_length($length) { } function process_type($field, $collate = "COLLATE") { - global $dbh, $enum_length, $unsigned; + global $connection, $enum_length, $unsigned; return " $field[type]" . ($field["length"] && !ereg('^date|time$', $field["type"]) ? "(" . process_length($field["length"]) . ")" : "") . (ereg('int|float|double|decimal', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "") - . (ereg('char|text|enum|set', $field["type"]) && $field["collation"] ? " $collate " . $dbh->quote($field["collation"]) : "") + . (ereg('char|text|enum|set', $field["type"]) && $field["collation"] ? " $collate " . $connection->quote($field["collation"]) : "") ; } function process_field($field, $type_field) { - global $dbh; + global $connection; $default = $field["default"] . ($field["on_update"] ? " ON UPDATE $field[on_update]" : ""); return idf_escape($field["field"]) . process_type($type_field) . ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp - . (!isset($field["default"]) || $field["auto_increment"] || ereg('text|blob', $field["type"]) ? "" : " DEFAULT " . ($field["type"] == "timestamp" && eregi("^CURRENT_TIMESTAMP( on update CURRENT_TIMESTAMP)?$", $default) ? $default : $dbh->quote($default))) - . " COMMENT " . $dbh->quote($field["comment"]) + . (!isset($field["default"]) || $field["auto_increment"] || ereg('text|blob', $field["type"]) ? "" : " DEFAULT " . ($field["type"] == "timestamp" && eregi("^CURRENT_TIMESTAMP( on update CURRENT_TIMESTAMP)?$", $default) ? $default : $connection->quote($default))) + . " COMMENT " . $connection->quote($field["comment"]) ; } @@ -233,11 +233,11 @@ function normalize_enum($match) { } function routine($name, $type) { - global $dbh, $enum_length, $inout, $types; + global $connection, $enum_length, $inout, $types; $aliases = array("bit" => "tinyint", "bool" => "tinyint", "boolean" => "tinyint", "integer" => "int", "double precision" => "float", "real" => "float", "dec" => "decimal", "numeric" => "decimal", "fixed" => "decimal", "national char" => "char", "national varchar" => "varchar"); $type_pattern = "(" . implode("|", array_keys($types + $aliases)) . ")(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?"; $pattern = "\\s*(" . ($type == "FUNCTION" ? "" : implode("|", $inout)) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern"; - $create = $dbh->result($dbh->query("SHOW CREATE $type " . idf_escape($name)), 2); + $create = $connection->result($connection->query("SHOW CREATE $type " . idf_escape($name)), 2); preg_match("~\\(((?:$pattern\\s*,?)*)\\)" . ($type == "FUNCTION" ? "\\s*RETURNS\\s+$type_pattern" : "") . "\\s*(.*)~is", $create, $match); $fields = array(); preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER); diff --git a/adminer/include/export.inc.php b/adminer/include/export.inc.php index 5a83bb2f..3d6e2672 100644 --- a/adminer/include/export.inc.php +++ b/adminer/include/export.inc.php @@ -10,9 +10,9 @@ function tar_file($filename, $contents) { } function dump_triggers($table, $style) { - global $dbh; - if ($_POST["format"] == "sql" && $style && $dbh->server_info >= 5) { - $result = $dbh->query("SHOW TRIGGERS LIKE " . $dbh->quote(addcslashes($table, "%_"))); + global $connection; + if ($_POST["format"] == "sql" && $style && $connection->server_info >= 5) { + $result = $connection->query("SHOW TRIGGERS LIKE " . $connection->quote(addcslashes($table, "%_"))); if ($result->num_rows) { $s = "\nDELIMITER ;;\n"; while ($row = $result->fetch_assoc()) { @@ -25,24 +25,24 @@ function dump_triggers($table, $style) { } function dump_table($table, $style, $is_view = false) { - global $dbh; + global $connection; if ($_POST["format"] == "csv") { dump("\xef\xbb\xbf"); // UTF-8 byte order mark if ($style) { dump_csv(array_keys(fields($table))); } } elseif ($style) { - $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table)); + $result = $connection->query("SHOW CREATE TABLE " . idf_escape($table)); if ($result) { if ($style == "DROP+CREATE") { dump("DROP " . ($is_view ? "VIEW" : "TABLE") . " IF EXISTS " . idf_escape($table) . ";\n"); } - $create = $dbh->result($result, 1); + $create = $connection->result($result, 1); dump(($style != "CREATE+ALTER" ? $create : ($is_view ? substr_replace($create, " OR REPLACE", 6, 0) : substr_replace($create, " IF NOT EXISTS", 12, 0))) . ";\n\n"); } if ($style == "CREATE+ALTER" && !$is_view) { // create procedure which iterates over original columns and adds new and removes old - $query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . $dbh->quote($table) . " ORDER BY ORDINAL_POSITION"; + $query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . $connection->quote($table) . " ORDER BY ORDINAL_POSITION"; dump("DELIMITER ;; CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT ''; @@ -53,18 +53,18 @@ CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE done, set_after bool DEFAULT 0; DECLARE add_columns text DEFAULT '"); $fields = array(); - $result = $dbh->query($query); + $result = $connection->query($query); $after = ""; while ($row = $result->fetch_assoc()) { - $row["default"] = (isset($row["COLUMN_DEFAULT"]) ? $dbh->quote($row["COLUMN_DEFAULT"]) : "NULL"); - $row["after"] = $dbh->quote($after); //! rgt AFTER lft, lft AFTER id doesn't work + $row["default"] = (isset($row["COLUMN_DEFAULT"]) ? $connection->quote($row["COLUMN_DEFAULT"]) : "NULL"); + $row["after"] = $connection->quote($after); //! rgt AFTER lft, lft AFTER id doesn't work $row["alter"] = escape_string(idf_escape($row["COLUMN_NAME"]) . " $row[COLUMN_TYPE]" . ($row["COLLATION_NAME"] ? " COLLATE $row[COLLATION_NAME]" : "") . (isset($row["COLUMN_DEFAULT"]) ? " DEFAULT $row[default]" : "") . ($row["IS_NULLABLE"] == "YES" ? "" : " NOT NULL") . ($row["EXTRA"] ? " $row[EXTRA]" : "") - . ($row["COLUMN_COMMENT"] ? " COMMENT " . $dbh->quote($row["COLUMN_COMMENT"]) : "") + . ($row["COLUMN_COMMENT"] ? " COMMENT " . $connection->quote($row["COLUMN_COMMENT"]) : "") . ($after ? " AFTER " . idf_escape($after) : " FIRST") ); dump(", ADD $row[alter]"); @@ -83,9 +83,9 @@ CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN CASE _column_name"); foreach ($fields as $row) { dump(" - WHEN " . $dbh->quote($row["COLUMN_NAME"]) . " THEN + WHEN " . $connection->quote($row["COLUMN_NAME"]) . " THEN SET add_columns = REPLACE(add_columns, ', ADD $row[alter]', ''); - IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != '$row[COLUMN_TYPE]' OR _extra != '$row[EXTRA]' OR _column_comment != " . $dbh->quote($row["COLUMN_COMMENT"]) . " OR after != $row[after] THEN + IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != '$row[COLUMN_TYPE]' OR _extra != '$row[EXTRA]' OR _column_comment != " . $connection->quote($row["COLUMN_COMMENT"]) . " OR after != $row[after] THEN SET @alter_table = CONCAT(@alter_table, ', MODIFY $row[alter]'); END IF;"); //! don't replace in comment } @@ -115,13 +115,13 @@ DROP PROCEDURE adminer_alter; } function dump_data($table, $style, $select = "") { - global $dbh, $max_packet; + global $connection, $max_packet; if ($style) { if ($_POST["format"] != "csv" && $style == "TRUNCATE+INSERT") { dump("TRUNCATE " . idf_escape($table) . ";\n"); } $fields = fields($table); - $result = $dbh->query(($select ? $select : "SELECT * FROM " . idf_escape($table)), 1); // 1 - MYSQLI_USE_RESULT //! enum and set as numbers, microtime + $result = $connection->query(($select ? $select : "SELECT * FROM " . idf_escape($table)), 1); // 1 - MYSQLI_USE_RESULT //! enum and set as numbers, microtime if ($result) { $insert = ""; $buffer = ""; @@ -133,7 +133,7 @@ function dump_data($table, $style, $select = "") { $insert = "INSERT INTO " . idf_escape($table) . " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ") VALUES"; } foreach ($row as $key => $val) { - $row[$key] = (isset($val) ? (ereg('int|float|double|decimal', $fields[$key]["type"]) ? $val : $dbh->quote($val)) : "NULL"); //! columns looking like functions + $row[$key] = (isset($val) ? (ereg('int|float|double|decimal', $fields[$key]["type"]) ? $val : $connection->quote($val)) : "NULL"); //! columns looking like functions } $s = implode(",\t", $row); if ($style == "INSERT+UPDATE") { diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 76bba2a9..5a4a5b69 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -2,10 +2,10 @@ /** Get database connection * @return Min_DB */ -function get_dbh() { - // can be used in customization, $dbh is minified - global $dbh; - return $dbh; +function connection() { + // can be used in customization, $connection is minified + global $connection; + return $connection; } /** Escape database identifier @@ -87,9 +87,9 @@ function optionlist($options, $selected = null, $use_keys = false) { * @return array */ function get_vals($query, $column = 0) { - global $dbh; + global $connection; $return = array(); - $result = $dbh->query($query); + $result = $connection->query($query); if ($result) { while ($row = $result->fetch_row()) { $return[] = $row[$column]; @@ -130,11 +130,11 @@ function unique_idf($row, $indexes) { * @return string */ function where($where) { - global $dbh; + global $connection; $return = array(); foreach ((array) $where["where"] as $key => $val) { $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY " . $dbh->quote($val); //! enum and set, columns looking like functions + $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY " . $connection->quote($val); //! enum and set, columns looking like functions } foreach ((array) $where["null"] as $key) { $key = bracket_escape($key, "back"); @@ -194,16 +194,16 @@ function redirect($location, $message = null) { * @return bool */ function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false) { - global $dbh, $error, $adminer; + global $connection, $error, $adminer; $sql = ""; if ($query) { $sql = $adminer->messageQuery($query); } if ($execute) { - $failed = !$dbh->query($query); + $failed = !$connection->query($query); } if ($failed) { - $error = h($dbh->error) . $sql; + $error = h($connection->error) . $sql; return false; } if ($redirect) { @@ -217,14 +217,14 @@ function query_redirect($query, $location, $message, $redirect = true, $execute * @return Min_Result */ function queries($query = null) { - global $dbh; + global $connection; static $queries = array(); if (!isset($query)) { // return executed queries without parameter return implode(";\n", $queries); } $queries[] = $query; - return $dbh->query($query); + return $connection->query($query); } /** Remove parameter from query string @@ -413,7 +413,7 @@ function input($field, $value, $function) { * @return string */ function process_input($field) { - global $dbh, $adminer; + global $connection, $adminer; $idf = bracket_escape($field["field"]); $function = $_POST["function"][$idf]; $value = $_POST["fields"][$idf]; @@ -430,7 +430,7 @@ function process_input($field) { if (!is_string($file)) { return false; //! report errors } - return "_binary" . $dbh->quote($file); + return "_binary" . $connection->quote($file); } else { return $adminer->processInput($field, $value, $function); } diff --git a/adminer/include/mysql.inc.php b/adminer/include/mysql.inc.php index c896ae7e..250db857 100644 --- a/adminer/include/mysql.inc.php +++ b/adminer/include/mysql.inc.php @@ -145,14 +145,14 @@ if (extension_loaded("mysqli")) { */ function connect() { global $adminer; - $dbh = new Min_DB; + $connection = new Min_DB; $credentials = $adminer->credentials(); - if ($dbh->connect($credentials[0], $credentials[1], $credentials[2])) { - $dbh->query("SET SQL_QUOTE_SHOW_CREATE=1"); - $dbh->query("SET NAMES utf8"); - return $dbh; + if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) { + $connection->query("SET SQL_QUOTE_SHOW_CREATE=1"); + $connection->query("SET NAMES utf8"); + return $connection; } - return $dbh->error; + return $connection->error; } /** Get cached list of databases @@ -177,9 +177,9 @@ function get_databases($flush = true) { * @return array */ function table_status($name = "") { - global $dbh; + global $connection; $return = array(); - $result = $dbh->query("SHOW TABLE STATUS" . (strlen($name) ? " LIKE " . $dbh->quote(addcslashes($name, "%_")) : "")); + $result = $connection->query("SHOW TABLE STATUS" . (strlen($name) ? " LIKE " . $connection->quote(addcslashes($name, "%_")) : "")); while ($row = $result->fetch_assoc()) { if ($row["Engine"] == "InnoDB") { // ignore internal comment, unnecessary since MySQL 5.1.21 @@ -208,9 +208,9 @@ function table_status_referencable() { * @return array array($name => array("field" => , "full_type" => , "type" => , "length" => , "unsigned" => , "default" => , "null" => , "auto_increment" => , "on_update" => , "collation" => , "privileges" => , "comment" => , "primary" => )) */ function fields($table) { - global $dbh; + global $connection; $return = array(); - $result = $dbh->query("SHOW FULL COLUMNS FROM " . idf_escape($table)); + $result = $connection->query("SHOW FULL COLUMNS FROM " . idf_escape($table)); if ($result) { while ($row = $result->fetch_assoc()) { preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match); @@ -239,13 +239,13 @@ function fields($table) { * @param string Min_DB to use * @return array array($key_name => array("type" => , "columns" => array(), "lengths" => array())) */ -function indexes($table, $dbh2 = null) { - global $dbh; - if (!is_object($dbh2)) { // use the main connection if the separate connection is unavailable - $dbh2 = $dbh; +function indexes($table, $connection2 = null) { + global $connection; + if (!is_object($connection2)) { // use the main connection if the separate connection is unavailable + $connection2 = $connection; } $return = array(); - $result = $dbh2->query("SHOW INDEX FROM " . idf_escape($table)); + $result = $connection2->query("SHOW INDEX FROM " . idf_escape($table)); if ($result) { while ($row = $result->fetch_assoc()) { $return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE"))); @@ -261,12 +261,12 @@ function indexes($table, $dbh2 = null) { * @return array array($name => array("db" => , "table" => , "source" => array(), "target" => array(), "on_delete" => , "on_update" => )) */ function foreign_keys($table) { - global $dbh, $on_actions; + global $connection, $on_actions; static $pattern = '(?:[^`]|``)+'; $return = array(); - $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table)); + $result = $connection->query("SHOW CREATE TABLE " . idf_escape($table)); if ($result) { - $create_table = $dbh->result($result, 1); + $create_table = $connection->result($result, 1); preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER); foreach ($matches as $match) { preg_match_all("~`($pattern)`~", $match[2], $source); @@ -289,17 +289,17 @@ function foreign_keys($table) { * @return array array("select" => ) */ function view($name) { - global $dbh; - return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1))); + global $connection; + return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)* AS ~U', '', $connection->result($connection->query("SHOW CREATE VIEW " . idf_escape($name)), 1))); } /** Get sorted grouped list of collations * @return array */ function collations() { - global $dbh; + global $connection; $return = array(); - $result = $dbh->query("SHOW COLLATION"); + $result = $connection->query("SHOW COLLATION"); while ($row = $result->fetch_assoc()) { $return[$row["Charset"]][] = $row["Collation"]; } @@ -315,8 +315,8 @@ function collations() { * @return string */ function escape_string($val) { - global $dbh; - return substr($dbh->quote($val), 1, -1); + global $connection; + return substr($connection->quote($val), 1, -1); } /** Find out if database is information_schema @@ -324,8 +324,8 @@ function escape_string($val) { * @return bool */ function information_schema($db) { - global $dbh; - return ($dbh->server_info >= 5 && $db == "information_schema"); + global $connection; + return ($connection->server_info >= 5 && $db == "information_schema"); } // value means maximum unsigned length diff --git a/adminer/privileges.inc.php b/adminer/privileges.inc.php index a3b77958..9642c812 100644 --- a/adminer/privileges.inc.php +++ b/adminer/privileges.inc.php @@ -1,7 +1,7 @@ query("SELECT User, Host FROM mysql.user ORDER BY Host, User"); +$result = $connection->query("SELECT User, Host FROM mysql.user ORDER BY Host, User"); if (!$result) { ?>

@@ -14,7 +14,7 @@ if (!$result) { query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host"); + $result = $connection->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host"); } echo "

\n"; echo "\n"; diff --git a/adminer/processlist.inc.php b/adminer/processlist.inc.php index b30640dc..1be05d02 100644 --- a/adminer/processlist.inc.php +++ b/adminer/processlist.inc.php @@ -15,7 +15,7 @@ page_header(lang('Process list'), $error);
 " . lang('Username') . "" . lang('Server') . "
query("SHOW PROCESSLIST"); +$result = $connection->query("SHOW PROCESSLIST"); for ($i=0; $row = $result->fetch_assoc(); $i++) { if (!$i) { echo "\n"; diff --git a/adminer/select.inc.php b/adminer/select.inc.php index ffeee302..e9426537 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -74,7 +74,7 @@ if ($_POST && !$error) { if ($_POST["delete"] || $set) { if ($_POST["all"] || ($primary === array() && $_POST["check"])) { $result = queries($command . ($_POST["all"] ? ($where ? "\nWHERE " . implode(" AND ", $where) : "") : "\nWHERE $where_check")); - $affected = $dbh->affected_rows; + $affected = $connection->affected_rows; } else { foreach ((array) $_POST["check"] as $val) { // where is not unique so OR can't be used @@ -82,7 +82,7 @@ if ($_POST && !$error) { if (!$result) { break; } - $affected += $dbh->affected_rows; + $affected += $connection->affected_rows; } } } @@ -103,7 +103,7 @@ if ($_POST && !$error) { } else { $set = ""; foreach ($matches2[1] as $i => $col) { - $set .= ", " . idf_escape($cols[$i]) . " = " . (!strlen($col) && $fields[$cols[$i]]["null"] ? "NULL" : $dbh->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col)))); + $set .= ", " . idf_escape($cols[$i]) . " = " . (!strlen($col) && $fields[$cols[$i]]["null"] ? "NULL" : $connection->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col)))); } $set = substr($set, 1); $result = queries("INSERT INTO " . idf_escape($_GET["select"]) . " SET$set ON DUPLICATE KEY UPDATE$set"); @@ -136,7 +136,7 @@ if (isset($rights["insert"])) { $adminer->selectLinks($table_status, $set); if (!$columns) { - echo "

" . lang('Unable to select the table') . ($fields ? "" : ": " . h($dbh->error)) . ".\n"; + echo "

" . lang('Unable to select the table') . ($fields ? "" : ": " . h($connection->error)) . ".\n"; } else { echo "\n"; echo "

"; @@ -155,9 +155,9 @@ if (!$columns) { $query = "SELECT " . (intval($limit) && $group && count($group) < count($select) ? "SQL_CALC_FOUND_ROWS " : "") . $from . $group_by . (strlen($limit) ? " LIMIT " . intval($limit) . (intval($_GET["page"]) ? " OFFSET " . ($limit * $_GET["page"]) : "") : ""); echo $adminer->selectQuery($query); - $result = $dbh->query($query); + $result = $connection->query($query); if (!$result) { - echo "

" . h($dbh->error) . "\n"; + echo "

" . h($connection->error) . "\n"; } else { $email_fields = array(); echo "\n"; @@ -170,7 +170,7 @@ if (!$columns) { } // use count($rows) without LIMIT, COUNT(*) without grouping, FOUND_ROWS otherwise (slowest) $found_rows = (intval($limit) && $group && count($group) < count($select) - ? $dbh->result($dbh->query(" SELECT FOUND_ROWS()")) // space to allow mysql.trace_mode + ? $connection->result($connection->query(" SELECT FOUND_ROWS()")) // space to allow mysql.trace_mode : count($rows) ); @@ -266,7 +266,7 @@ if (!$columns) { // slow with big tables ob_flush(); flush(); - $found_rows = $dbh->result($dbh->query("SELECT COUNT(*) FROM " . idf_escape($TABLE) . ($where ? " WHERE " . implode(" AND ", $where) : ""))); + $found_rows = $connection->result($connection->query("SELECT COUNT(*) FROM " . idf_escape($TABLE) . ($where ? " WHERE " . implode(" AND ", $where) : ""))); } echo "

"; if (intval($limit) && $found_rows > $limit) { diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index 1e97a073..68b25601 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -33,9 +33,9 @@ if (!$error && $_POST) { $delimiter = ";"; $offset = 0; $empty = true; - $dbh2 = (strlen(DB) ? connect() : null); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error - if (is_object($dbh2)) { - $dbh2->select_db(DB); + $connection2 = (strlen(DB) ? connect() : null); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error + if (is_object($connection2)) { + $connection2->select_db(DB); } $explain = 1; while (strlen($query)) { @@ -60,8 +60,8 @@ if (!$error && $_POST) { flush(); // can take a long time - show the running query $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 //! don't allow changing of character_set_results, convert encoding of displayed query - if (!$dbh->multi_query($q)) { - echo "

" . lang('Error in query') . ": " . h($dbh->error) . "\n"; + if (!$connection->multi_query($q)) { + echo "

" . lang('Error in query') . ": " . h($connection->error) . "\n"; if ($_POST["error_stops"]) { break; } @@ -69,15 +69,15 @@ if (!$error && $_POST) { $end = explode(" ", microtime()); echo "

" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "

\n"; do { - $result = $dbh->store_result(); + $result = $connection->store_result(); if (is_object($result)) { - select($result, $dbh2); + select($result, $connection2); echo "

" . lang('%d row(s)', $result->num_rows); - if ($dbh2 && preg_match("~^$space*SELECT$space+~isU", $q)) { + if ($connection2 && preg_match("~^$space*SELECT$space+~isU", $q)) { $id = "explain-$explain"; echo ", EXPLAIN\n"; echo "

\n"; $explain++; } @@ -85,10 +85,10 @@ if (!$error && $_POST) { if (preg_match("~^$space*$alter_database", $query)) { $databases = null; // clear cache } - echo "

" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "\n"; + echo "

" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "\n"; } unset($result); // free resultset - } while ($dbh->next_result()); + } while ($connection->next_result()); } $query = substr($query, $offset); $offset = 0; diff --git a/adminer/table.inc.php b/adminer/table.inc.php index f608c681..dd3f1d11 100644 --- a/adminer/table.inc.php +++ b/adminer/table.inc.php @@ -1,8 +1,8 @@ query("SHOW FULL COLUMNS FROM " . idf_escape($TABLE)); +$result = $connection->query("SHOW FULL COLUMNS FROM " . idf_escape($TABLE)); if (!$result) { - $error = h($dbh->error); + $error = h($connection->error); } $table_status = ($result ? table_status($TABLE) : array()); @@ -55,9 +55,9 @@ if ($result) { echo '

' . lang('Add foreign key') . "\n"; } - if ($dbh->server_info >= 5) { + if ($connection->server_info >= 5) { echo "

" . lang('Triggers') . "

\n"; - $result = $dbh->query("SHOW TRIGGERS LIKE " . $dbh->quote(addcslashes($TABLE, "%_"))); + $result = $connection->query("SHOW TRIGGERS LIKE " . $connection->quote(addcslashes($TABLE, "%_"))); if ($result->num_rows) { echo "
 " . implode("", array_keys($row)) . "
\n"; while ($row = $result->fetch_assoc()) { diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php index 4cb13747..be90d846 100644 --- a/adminer/trigger.inc.php +++ b/adminer/trigger.inc.php @@ -21,7 +21,7 @@ $row = array("Trigger" => $TABLE . "_bi"); if ($_POST) { $row = $_POST; } elseif (strlen($_GET["name"])) { - $result = $dbh->query("SHOW TRIGGERS WHERE `Trigger` = " . $dbh->quote($_GET["name"])); + $result = $connection->query("SHOW TRIGGERS WHERE `Trigger` = " . $connection->quote($_GET["name"])); $row = $result->fetch_assoc(); } ?> diff --git a/adminer/user.inc.php b/adminer/user.inc.php index d7e4ed76..163c51bb 100644 --- a/adminer/user.inc.php +++ b/adminer/user.inc.php @@ -1,7 +1,7 @@ array("All privileges" => "")); -$result = $dbh->query("SHOW PRIVILEGES"); +$result = $connection->query("SHOW PRIVILEGES"); while ($row = $result->fetch_assoc()) { foreach (explode(",", ($row["Privilege"] == "Grant option" ? "" : $row["Context"])) as $context) { $privileges[$context][$row["Privilege"]] = $row["Comment"]; @@ -27,7 +27,7 @@ if ($_POST) { } $grants = array(); $old_pass = ""; -if (isset($_GET["host"]) && ($result = $dbh->query("SHOW GRANTS FOR " . $dbh->quote($USER) . "@" . $dbh->quote($_GET["host"])))) { //! use information_schema for MySQL 5 - column names in column privileges are not escaped +if (isset($_GET["host"]) && ($result = $connection->query("SHOW GRANTS FOR " . $connection->quote($USER) . "@" . $connection->quote($_GET["host"])))) { //! use information_schema for MySQL 5 - column names in column privileges are not escaped while ($row = $result->fetch_row()) { if (preg_match('~GRANT (.*) ON (.*) TO ~', $row[0], $match) && preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~', $match[1], $matches, PREG_SET_ORDER)) { //! escape the part between ON and TO foreach ($matches as $val) { @@ -44,16 +44,16 @@ if (isset($_GET["host"]) && ($result = $dbh->query("SHOW GRANTS FOR " . $dbh->qu } if ($_POST && !$error) { - $old_user = (isset($_GET["host"]) ? $dbh->quote($USER) . "@" . $dbh->quote($_GET["host"]) : "''"); - $new_user = $dbh->quote($_POST["user"]) . "@" . $dbh->quote($_POST["host"]); // if $_GET["host"] is not set then $new_user is always different - $pass = $dbh->quote($_POST["pass"]); + $old_user = (isset($_GET["host"]) ? $connection->quote($USER) . "@" . $connection->quote($_GET["host"]) : "''"); + $new_user = $connection->quote($_POST["user"]) . "@" . $connection->quote($_POST["host"]); // if $_GET["host"] is not set then $new_user is always different + $pass = $connection->quote($_POST["pass"]); if ($_POST["drop"]) { query_redirect("DROP USER $old_user", ME . "privileges=", lang('User has been dropped.')); } else { if ($old_user == $new_user) { queries("SET PASSWORD FOR $new_user = " . ($_POST["hashed"] ? $pass : "PASSWORD($pass)")); } else { - $error = !queries(($dbh->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " $new_user IDENTIFIED BY" . ($_POST["hashed"] ? " PASSWORD" : "") . " $pass"); + $error = !queries(($connection->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " $new_user IDENTIFIED BY" . ($_POST["hashed"] ? " PASSWORD" : "") . " $pass"); } if (!$error) { $revoke = array(); @@ -94,7 +94,7 @@ if ($_POST && !$error) { query_redirect(queries(), ME . "privileges=", (isset($_GET["host"]) ? lang('User has been altered.') : lang('User has been created.')), !$error, false, $error); if ($old_user != $new_user) { // delete new user in case of an error - $dbh->query("DROP USER $new_user"); + $connection->query("DROP USER $new_user"); } } } @@ -105,7 +105,7 @@ if ($_POST) { $row = $_POST; $grants = $new_grants; } else { - $row = $_GET + array("host" => $dbh->result($dbh->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"))); // create user on the same domain by default + $row = $_GET + array("host" => $connection->result($connection->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"))); // create user on the same domain by default $row["pass"] = $old_pass; if (strlen($old_pass)) { $row["hashed"] = true; diff --git a/adminer/variables.inc.php b/adminer/variables.inc.php index a977b986..127ddc6c 100644 --- a/adminer/variables.inc.php +++ b/adminer/variables.inc.php @@ -2,7 +2,7 @@ page_header(lang('Variables')); echo "
\n"; -$result = $dbh->query("SHOW VARIABLES"); +$result = $connection->query("SHOW VARIABLES"); while ($row = $result->fetch_assoc()) { echo ""; echo "
" . h($row["Variable_name"]) . ""; diff --git a/changes.txt b/changes.txt index 7eb49234..b0b7b44c 100644 --- a/changes.txt +++ b/changes.txt @@ -1,3 +1,10 @@ +Adminer 2.1.1-dev: +Display table links above table structure +Fix removed default in ALTER +Display whitespace in texts (bug #2858042) +Move

to $adminer->navigation (customization) +Rename get_dbh to connection (customization) + Adminer 2.1.0 (released 2009-09-12): Edit default values directly in table creation Execute SQL file stored on server disk diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index 10c7ff66..c44cdeb5 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -10,10 +10,10 @@ class Adminer { } function database() { - global $dbh; + global $connection; $dbs = get_databases(false); return (!$dbs - ? $dbh->result($dbh->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)")) // username without the database list + ? $connection->result($connection->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)")) // username without the database list : $dbs[(information_schema($dbs[0]) ? 1 : 0)] // first available database ); } @@ -47,13 +47,13 @@ class Adminer { } function backwardKeys($table) { - global $dbh; + global $connection; $return = array(); - $result = $dbh->query("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME + $result = $connection->query("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE -WHERE TABLE_SCHEMA = " . $dbh->quote($this->database()) . " -AND REFERENCED_TABLE_SCHEMA = " . $dbh->quote($this->database()) . " -AND REFERENCED_TABLE_NAME = " . $dbh->quote($table) . " +WHERE TABLE_SCHEMA = " . $connection->quote($this->database()) . " +AND REFERENCED_TABLE_SCHEMA = " . $connection->quote($this->database()) . " +AND REFERENCED_TABLE_NAME = " . $connection->quote($table) . " ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 if ($result) { while ($row = $result->fetch_assoc()) { @@ -78,7 +78,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 } function rowDescriptions($rows, $foreignKeys) { - global $dbh; + global $connection; $return = $rows; foreach ($rows[0] as $key => $val) { foreach ((array) $foreignKeys[$key] as $foreignKey) { @@ -89,11 +89,11 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 // find all used ids $ids = array(); foreach ($rows as $row) { - $ids[$row[$key]] = $dbh->quote($row[$key]); + $ids[$row[$key]] = $connection->quote($row[$key]); } // uses constant number of queries to get the descriptions, join would be complex, multiple queries would be slow $descriptions = array(); - $result = $dbh->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")"); + $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")"); while ($row = $result->fetch_row()) { $descriptions[$row[0]] = $row[1]; } @@ -254,7 +254,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 } function selectEmailProcess($where, $foreignKeys) { - global $dbh; + global $connection; if ($_POST["email_append"]) { return true; } @@ -265,7 +265,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 $subject = $_POST["email_subject"]; $message = $_POST["email_message"]; preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i', "$subject.$message", $matches); // allows {$name} in subject or message - $result = $dbh->query("SELECT DISTINCT $field, " . implode(", ", array_map('idf_escape', array_unique($matches[1]))) . " FROM " . idf_escape($_GET["select"]) + $result = $connection->query("SELECT DISTINCT $field, " . implode(", ", array_map('idf_escape', array_unique($matches[1]))) . " FROM " . idf_escape($_GET["select"]) . " WHERE $field IS NOT NULL AND $field != ''" . ($where ? " AND " . implode(" AND ", $where) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))") @@ -310,15 +310,15 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 } function editInput($table, $field, $attrs, $value) { - global $dbh; + global $connection; $foreign_keys = column_foreign_keys($table); foreach ((array) $foreign_keys[$field["field"]] as $foreign_key) { if (count($foreign_key["source"]) == 1) { $id = idf_escape($foreign_key["target"][0]); $name = $this->rowDescription($foreign_key["table"]); - if (strlen($name) && $dbh->result($dbh->query("SELECT COUNT(*) FROM " . idf_escape($foreign_key["table"]))) <= 1000) { // optionlist with more than 1000 options would be too big + if (strlen($name) && $connection->result($connection->query("SELECT COUNT(*) FROM " . idf_escape($foreign_key["table"]))) <= 1000) { // optionlist with more than 1000 options would be too big $return = array("" => ""); - $result = $dbh->query("SELECT $id, $name FROM " . idf_escape($foreign_key["table"]) . " ORDER BY 2"); + $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreign_key["table"]) . " ORDER BY 2"); while ($row = $result->fetch_row()) { $return[$row[0]] = $row[1]; } @@ -336,11 +336,11 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 } function processInput($field, $value, $function = "") { - global $dbh; + global $connection; if ($function == "now") { return "$function()"; } - $return = $dbh->quote(ereg('date|timestamp', $field["type"]) && preg_match('(^' . str_replace('\\$1', '(?P[0-9]+)', preg_replace('~(\\\\\\$([2-6]))~', '(?P[0-9]{1,2})', preg_quote(lang('$1-$3-$5')))) . '(.*))', $value, $match) + $return = $connection->quote(ereg('date|timestamp', $field["type"]) && preg_match('(^' . str_replace('\\$1', '(?P[0-9]+)', preg_replace('~(\\\\\\$([2-6]))~', '(?P[0-9]{1,2})', preg_quote(lang('$1-$3-$5')))) . '(.*))', $value, $match) ? ($match["p1"] ? $match["p1"] : ($match["p2"] < 70 ? 20 : 19) . $match["p2"]) . "-$match[p3]$match[p4]-$match[p5]$match[p6]" . end($match) : $value ); diff --git a/editor/include/connect.inc.php b/editor/include/connect.inc.php index 8bc07761..feb69e27 100644 --- a/editor/include/connect.inc.php +++ b/editor/include/connect.inc.php @@ -1,2 +1,2 @@ select_db($adminer->database()); +$connection->select_db($adminer->database()); diff --git a/editor/include/export.inc.php b/editor/include/export.inc.php index 319410a5..56ec32e2 100644 --- a/editor/include/export.inc.php +++ b/editor/include/export.inc.php @@ -4,8 +4,8 @@ function dump_table($table) { } function dump_data($table, $style, $select = "") { - global $dbh; - $result = $dbh->query(($select ? $select : "SELECT * FROM " . idf_escape($table))); + global $connection; + $result = $connection->query(($select ? $select : "SELECT * FROM " . idf_escape($table))); if ($result) { while ($row = $result->fetch_assoc()) { dump_csv($row); diff --git a/todo.txt b/todo.txt index 645b6a4c..b5099835 100644 --- a/todo.txt +++ b/todo.txt @@ -11,7 +11,7 @@ IE6 -