- Confirm before exiting edited edit form
- Display collation at table structure if different from table
- Ctrl+click in select moves the cursor in modern browsers
+- URL parameter ?ext=pdo to force using PDO
- PostgreSQL: Display auto_increment of inserted rows
- PostgreSQL: Display description of system variables
- PostgreSQL: Avoid warning about crdb_version (bug #924, regression from 5.0.5)
if (isset($_GET["mssql"])) {
define('Adminer\DRIVER', "mssql");
- if (extension_loaded("sqlsrv")) {
+ if (extension_loaded("sqlsrv") && $_GET["ext"] != "pdo") {
class Db {
public $extension = "sqlsrv", $server_info, $affected_rows, $errno, $error;
private $link, $result;
if (!defined('Adminer\DRIVER')) {
define('Adminer\DRIVER', "server"); // server - backwards compatibility
// MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable
- if (extension_loaded("mysqli")) {
+ if (extension_loaded("mysqli") && $_GET["ext"] != "pdo") {
class Db extends \MySQLi {
public $extension = "MySQLi";
if (isset($_GET["oracle"])) {
define('Adminer\DRIVER', "oracle");
- if (extension_loaded("oci8")) {
+ if (extension_loaded("oci8") && $_GET["ext"] != "pdo") {
class Db {
public $extension = "oci8", $server_info, $affected_rows, $errno, $error;
public $_current_db;
if (isset($_GET["pgsql"])) {
define('Adminer\DRIVER', "pgsql");
- if (extension_loaded("pgsql")) {
+ if (extension_loaded("pgsql") && $_GET["ext"] != "pdo") {
class Db {
public $extension = "PgSQL", $server_info, $affected_rows, $error, $timeout;
private $link, $result, $string, $database = true;
if (isset($_GET["sqlite"])) {
define('Adminer\DRIVER', "sqlite");
- if (class_exists("SQLite3")) {
+ if (class_exists("SQLite3") && $_GET["ext"] != "pdo") {
class SqliteDb {
public $extension = "SQLite3", $server_info, $affected_rows, $errno, $error;
preg_replace('~\?.*~', '', relative_uri()) . '?'
. (sid() ? SID . '&' : '')
. (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '')
+ . ($_GET["ext"] ? "ext=" . urlencode($_GET["ext"]) . '&' : '')
. (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '')
. (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')
);
function auth_url($vendor, $server, $username, $db = null) {
global $drivers;
$uri = remove_from_uri(implode("|", array_keys($drivers))
- . "|username|"
+ . "|username|ext|"
. ($db !== null ? "db|" : "")
. ($vendor == 'mssql' || $vendor == 'pgsql' ? "" : "ns|") // we don't have access to support() here
. session_name())
return "$match[1]?"
. (sid() ? SID . "&" : "")
. ($vendor != "server" || $server != "" ? urlencode($vendor) . "=" . urlencode($server) . "&" : "")
+ . ($_GET["ext"] ? "ext=" . urlencode($_GET["ext"]) . "&" : "")
. "username=" . urlencode($username)
. ($db != "" ? "&db=" . urlencode($db) : "")
. ($match[2] ? "&$match[2]" : "")