File: database_interface.inc.php

package info (click to toggle)
phpmyadmin 4%3A4.6.6-4%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 43,792 kB
  • sloc: php: 196,012; sql: 494; sh: 238; python: 186; makefile: 185; xml: 177
file content (89 lines) | stat: -rw-r--r-- 2,689 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Creates the database interface required for database interactions
 * and add it to GLOBALS.
 *
 * @package PhpMyAdmin-DBI
 */
use PMA\libraries\dbi\DBIDummy;
use PMA\libraries\di\Container;
use PMA\libraries\DatabaseInterface;
use PMA\libraries\dbi\DBIMysql;
use PMA\libraries\dbi\DBIMysqli;

if (! defined('PHPMYADMIN')) {
    exit;
}

if (defined('TESTSUITE')) {
    /**
     * For testsuite we use dummy driver which can fake some queries.
     */
    $extension = new DBIDummy();
} else {

    /**
     * First check for the mysqli extension, as it's the one recommended
     * for the MySQL server's version that we support
     * (if PHP 7+, it's the only one supported)
     */
    $extension = 'mysqli';
    if (!DatabaseInterface::checkDbExtension($extension)) {

        $docurl = PMA\libraries\Util::getDocuLink('faq', 'faqmysql');
        $doclink = sprintf(
            __('See %sour documentation%s for more information.'),
            '[a@' . $docurl  . '@documentation]',
            '[/a]'
        );

        if (PHP_VERSION_ID < 70000) {
            $extension = 'mysql';
            if (! PMA\libraries\DatabaseInterface::checkDbExtension($extension)) {
                // warn about both extensions missing and exit
                PMA_warnMissingExtension(
                    'mysqli',
                    true,
                    $doclink
                );
            } elseif (empty($_SESSION['mysqlwarning'])) {
                trigger_error(
                    __(
                        'You are using the mysql extension which is deprecated in '
                        . 'phpMyAdmin. Please consider installing the mysqli '
                        . 'extension.'
                    ) . ' ' . $doclink,
                    E_USER_WARNING
                );
                // tell the user just once per session
                $_SESSION['mysqlwarning'] = true;
            }
        } else {
            // mysql extension is not part of PHP 7+, so warn and exit
            PMA_warnMissingExtension(
                'mysqli',
                true,
                $doclink
            );
        }
    }

    /**
     * Including The DBI Plugin
     */
    switch($extension) {
    case 'mysql' :
        $extension = new DBIMysql();
        break;
    case 'mysqli' :
        include_once 'libraries/dbi/DBIMysqli.lib.php';
        $extension = new DBIMysqli();
        break;
    }
}
$GLOBALS['dbi'] = new DatabaseInterface($extension);

$container = Container::getDefaultContainer();
$container->set('PMA_DatabaseInterface', $GLOBALS['dbi']);
$container->alias('dbi', 'PMA_DatabaseInterface');