forked from phpmyadmin/phpmyadmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase_interface.inc.php
91 lines (83 loc) · 2.63 KB
/
database_interface.inc.php
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
90
91
<?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 PhpMyAdmin\Core;
use PhpMyAdmin\Dbi\DbiDummy;
use PhpMyAdmin\Di\Container;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Dbi\DbiMysql;
use PhpMyAdmin\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 = PhpMyAdmin\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 (! PhpMyAdmin\DatabaseInterface::checkDbExtension($extension)) {
// warn about both extensions missing and exit
Core::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
Core::warnMissingExtension(
'mysqli',
true,
$doclink
);
}
}
/**
* Including The DBI Plugin
*/
switch($extension) {
case 'mysql' :
$extension = new DbiMysql();
break;
case 'mysqli' :
include_once 'libraries/dbi/dbi_mysqli.inc.php';
$extension = new DbiMysqli();
break;
}
}
$GLOBALS['dbi'] = new DatabaseInterface($extension);
$container = Container::getDefaultContainer();
$container->set('PMA_DatabaseInterface', $GLOBALS['dbi']);
$container->alias('dbi', 'PMA_DatabaseInterface');