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