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--EXPECTF--
160array(1) {
161  [%u|b%"testing"]=>
162  %unicode|string%(19) "mysqli.default_port"
163}
164array(1) {
165  [%u|b%"testing"]=>
166  %unicode|string%(17) "mysqli.default_pw"
167}
168array(1) {
169  [%u|b%"testing"]=>
170  %unicode|string%(19) "mysqli.default_user"
171}
172array(1) {
173  [%u|b%"all_defaults"]=>
174  %unicode|string%(13) "have been set"
175}
176array(1) {
177  [%u|b%"all_defaults"]=>
178  %unicode|string%(13) "have been set"
179}
180done!