xref: /php-src/ext/mysqli/tests/mysqli_kill.phpt (revision 7e5171d1)
1--TEST--
2mysqli_kill()
3--EXTENSIONS--
4mysqli
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8?>
9--FILE--
10<?php
11    require 'table.inc';
12
13    try {
14        mysqli_kill($link, 0);
15    } catch (\ValueError $e) {
16        echo $e->getMessage() . \PHP_EOL;
17    }
18
19    if (!$thread_id = mysqli_thread_id($link))
20        printf("[004] Cannot determine thread id, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
21
22    mysqli_kill($link, $thread_id);
23
24    if ($res = mysqli_query($link, "SELECT id FROM test LIMIT 1"))
25        printf("[006] Expecting boolean/false, got %s/%s\n", gettype($res), $res);
26
27    var_dump($error = mysqli_error($link));
28    if (!is_string($error) || ('' === $error))
29        printf("[007] Expecting string/any non empty, got %s/%s\n", gettype($error), $error);
30    var_dump($res);
31    var_dump($link);
32    if ($link->info != 'Records: 6  Duplicates: 0  Warnings: 0') {
33        printf("[008] mysqlnd used to be more verbose and used to support SELECT\n");
34    }
35
36    mysqli_close($link);
37
38    if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
39        printf("[010] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
40
41    try {
42        mysqli_kill($link, -1);
43    } catch (\ValueError $e) {
44        echo $e->getMessage() . \PHP_EOL;
45    }
46    if ((!$res = mysqli_query($link, "SELECT id FROM test LIMIT 1")) ||
47        (!$tmp = mysqli_fetch_assoc($res))) {
48        printf("[011] Connection should not be gone, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
49    }
50    var_dump($tmp);
51    mysqli_free_result($res);
52    mysqli_close($link);
53
54    if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
55        printf("[012] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
56
57    mysqli_change_user($link, "This might work if you accept anonymous users in your setup", "password", $db);
58    try {
59        mysqli_kill($link, -1);
60    } catch (\ValueError $e) {
61        echo $e->getMessage() . \PHP_EOL;
62    }
63
64    mysqli_close($link);
65
66    print "done!";
67?>
68--CLEAN--
69<?php
70    require_once 'clean_table.inc';
71?>
72--EXPECTF--
73
74Deprecated: Function mysqli_kill() is deprecated since 8.4, use KILL CONNECTION/QUERY SQL statement instead in %s
75mysqli_kill(): Argument #2 ($process_id) must be greater than 0
76
77Deprecated: Function mysqli_kill() is deprecated since 8.4, use KILL CONNECTION/QUERY SQL statement instead in %s
78string(%d) "%s"
79bool(false)
80object(mysqli)#%d (%d) {
81  ["affected_rows"]=>
82  int(-1)
83  ["client_info"]=>
84  string(%d) "%s"
85  ["client_version"]=>
86  int(%d)
87  ["connect_errno"]=>
88  int(0)
89  ["connect_error"]=>
90  NULL
91  ["errno"]=>
92  int(%d)
93  ["error"]=>
94  string(%d) "%s"
95  ["error_list"]=>
96  array(1) {
97    [0]=>
98    array(3) {
99      ["errno"]=>
100      int(%d)
101      ["sqlstate"]=>
102      string(5) "%s"
103      ["error"]=>
104      string(%d) "%s"
105    }
106  }
107  ["field_count"]=>
108  int(0)
109  ["host_info"]=>
110  string(%d) "%s"
111  ["info"]=>
112  %s
113  ["insert_id"]=>
114  int(0)
115  ["server_info"]=>
116  string(%d) "%s"
117  ["server_version"]=>
118  int(%d)
119  ["sqlstate"]=>
120  string(5) "HY000"
121  ["protocol_version"]=>
122  int(10)
123  ["thread_id"]=>
124  int(%d)
125  ["warning_count"]=>
126  int(0)
127}
128
129Deprecated: Function mysqli_kill() is deprecated since 8.4, use KILL CONNECTION/QUERY SQL statement instead in %s
130mysqli_kill(): Argument #2 ($process_id) must be greater than 0
131array(1) {
132  ["id"]=>
133  string(1) "1"
134}
135
136Deprecated: Function mysqli_kill() is deprecated since 8.4, use KILL CONNECTION/QUERY SQL statement instead in %s
137mysqli_kill(): Argument #2 ($process_id) must be greater than 0
138done!
139