1--TEST--
2new mysqli()
3--SKIPIF--
4<?php
5require_once('skipif.inc');
6require_once('skipifemb.inc');
7require_once('skipifconnectfailure.inc');
8?>
9--FILE--
10<?php
11    require_once("connect.inc");
12
13    $tmp    = NULL;
14    $link   = NULL;
15
16    if ($socket != "")
17        /* mysqli.default_socket requires non-empty string */
18        ini_set('mysqli.default_socket', 'socket');
19
20    ini_set('mysqli.default_port', 9999);
21    ini_set('mysqli.default_pw', 'password');
22    ini_set('mysqli.default_user', 'user');
23    ini_set('mysqli.default_host', 'host');
24
25    mysqli_report(MYSQLI_REPORT_OFF);
26    mysqli_report(MYSQLI_REPORT_STRICT);
27
28    if ($socket != "") {
29        ini_set('mysqli.default_socket', $socket);
30        try {
31            $mysqli = mysqli_init();
32            $mysqli->real_connect($host, $user, $passwd, $db, $port);
33
34            if (!$res = $mysqli->query("SELECT 'mysqli.default_socket' AS testing"))
35                printf("[001] [%d] %s\n", $mysqli->errno, $mysqli->error);
36            $tmp = $res->fetch_assoc();
37            $res->free_result();
38
39            if (!isset($tmp['testing']) || $tmp['testing'] != 'mysqli.default_socket') {
40                printf("[002] mysqli.default_socket not properly set?\n");
41                var_dump($tmp);
42            }
43
44            $mysqli->close();
45
46        } catch (mysqli_sql_exception $e) {
47            printf("%s\n", $e->getMessage());
48            printf("[002] Usage of mysqli.default_socket failed\n");
49        }
50    }
51
52    ini_set('mysqli.default_port', $port);
53    try {
54        $mysqli = mysqli_init();
55        $mysqli->real_connect($host, $user, $passwd, $db);
56
57        if (!$res = $mysqli->query("SELECT 'mysqli.default_port' AS testing"))
58            printf("[003] [%d] %s\n", $mysqli->errno, $mysqli->error);
59        var_dump($res->fetch_assoc());
60        $res->free_result();
61
62        $mysqli->close();
63
64    } catch (mysqli_sql_exception $e) {
65        printf("%s\n", $e->getMessage());
66        printf("[004] Usage of mysqli.default_port failed\n");
67    }
68
69    ini_set('mysqli.default_pw', $passwd);
70    try {
71        $mysqli = mysqli_init();
72        $mysqli->real_connect($host, $user);
73        $mysqli->select_db($db);
74
75        if (!$res = $mysqli->query("SELECT 'mysqli.default_pw' AS testing"))
76            printf("[005] [%d] %s\n", $mysqli->errno, $mysqli->error);
77        var_dump($res->fetch_assoc());
78        $res->free_result();
79
80        $mysqli->close();
81
82    } catch (mysqli_sql_exception $e) {
83        printf("%s\n", $e->getMessage());
84        printf("[006] Usage of mysqli.default_pw failed\n");
85    }
86
87    ini_set('mysqli.default_user', $user);
88    try {
89        $mysqli = mysqli_init();
90        $mysqli->real_connect($host);
91        $mysqli->select_db($db);
92
93        if (!$res = $mysqli->query("SELECT 'mysqli.default_user' AS testing"))
94            printf("[007] [%d] %s\n", $mysqli->errno, $mysqli->error);
95        var_dump($res->fetch_assoc());
96        $res->free_result();
97
98        $mysqli->close();
99
100    } catch (mysqli_sql_exception $e) {
101        printf("%s\n", $e->getMessage());
102        printf("[008] Usage of mysqli.default_user failed\n");
103    }
104
105    ini_set('mysqli.default_host', $host);
106    try {
107        $mysqli = mysqli_init();
108        $mysqli->real_connect();
109        $mysqli->select_db($db);
110
111        if (!$res = $mysqli->query("SELECT 1"))
112            printf("[009] [%d] %s\n", $mysqli->errno, $mysqli->error);
113        $res->free_result();
114
115        if (!$res = $mysqli->query("SELECT SUBSTRING_INDEX(USER(),'@',1) AS username"))
116            printf("[010] [%d] %s\n", $mysqli->errno, $mysqli->error);
117
118        $tmp = $res->fetch_assoc();
119        $res->free_result();
120        if ($tmp['username'] !== $user)
121            printf("[011] Expecting string/%s, got %s/%s\n", $user, gettype($tmp['username']), $tmp['username']);
122
123        $mysqli->close();
124
125    } catch (mysqli_sql_exception $e) {
126        printf("%s\n", $e->getMessage());
127        printf("[012] Usage of mysqli.default_host failed\n");
128    }
129
130    try {
131        $link = mysqli_connect($host, $user, $passwd, null, ini_get('mysqli.default_port'));
132        mysqli_select_db($link, $db);
133        if (!$res = mysqli_query($link, "SELECT 'have been set' AS all_defaults"))
134            printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
135        var_dump(mysqli_fetch_assoc($res));
136        mysqli_free_result($res);
137        mysqli_close($link);
138    } catch (mysqli_sql_exception $e) {
139        printf("%s\n", $e->getMessage());
140        printf("[014] Usage of mysqli_connect() has failed\n");
141    }
142
143    try {
144        $link = mysqli_connect($host, $user, $passwd, null);
145        mysqli_select_db($link, $db);
146        if (!$res = mysqli_query($link, "SELECT 'have been set' AS all_defaults"))
147            printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
148        var_dump(mysqli_fetch_assoc($res));
149        mysqli_free_result($res);
150        mysqli_close($link);
151    } catch (mysqli_sql_exception $e) {
152        printf("%s\n", $e->getMessage());
153        printf("[016] Usage of mysqli_connect() has failed\n");
154    }
155
156
157    print "done!";
158?>
159--EXPECT--
160array(1) {
161  ["testing"]=>
162  string(19) "mysqli.default_port"
163}
164array(1) {
165  ["testing"]=>
166  string(17) "mysqli.default_pw"
167}
168array(1) {
169  ["testing"]=>
170  string(19) "mysqli.default_user"
171}
172array(1) {
173  ["all_defaults"]=>
174  string(13) "have been set"
175}
176array(1) {
177  ["all_defaults"]=>
178  string(13) "have been set"
179}
180done!
181