1--TEST-- 2mysqli->change_user() 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once 'skipifconnectfailure.inc'; 8 9require_once 'table.inc'; 10 11if (mysqli_get_server_version($link) >= 50600) 12 die("SKIP For MySQL < 5.6.0"); 13?> 14--FILE-- 15<?php 16 require_once 'connect.inc'; 17 18 $link = NULL; 19 $tmp = NULL; 20 21 $mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket); 22 23 if (false !== ($tmp = $mysqli->change_user($user . '_unknown_really', $passwd . 'non_empty', $db))) 24 printf("[006] Expecting false, got %s/%s\n", gettype($tmp), $tmp); 25 26 if (false !== ($tmp = $mysqli->change_user($user, $passwd . '_unknown_really', $db))) 27 printf("[007] Expecting false, got %s/%s\n", gettype($tmp), $tmp); 28 29 if (false !== ($tmp = $mysqli->change_user($user, $passwd, $db . '_unknown_really'))) 30 printf("[008] Expecting false, got %s/%s\n", gettype($tmp), $tmp); 31 32 // Reconnect because after 3 failed change_user attempts, the server blocks you off. 33 $mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket); 34 35 if (!$mysqli->query('SET @mysqli_change_user_test_var=1')) 36 printf("[009] Failed to set test variable: [%d] %s\n", $mysqli->errno, $mysqli->error); 37 38 if (!$res = $mysqli->query('SELECT @mysqli_change_user_test_var AS test_var')) 39 printf("[010] [%d] %s\n", $mysqli->errno, $mysqli->error); 40 $tmp = $res->fetch_assoc(); 41 $res->free_result(); 42 if (1 != $tmp['test_var']) 43 printf("[011] Cannot set test variable\n"); 44 45 if (true !== ($tmp = $mysqli->change_user($user, $passwd, $db))) 46 printf("[012] Expecting true, got %s/%s\n", gettype($tmp), $tmp); 47 48 if (!$res = $mysqli->query('SELECT database() AS dbname, user() AS user')) 49 printf("[013] [%d] %s\n", $mysqli->errno, $mysqli->error); 50 $tmp = $res->fetch_assoc(); 51 $res->free_result(); 52 53 if (substr($tmp['user'], 0, strlen($user)) !== $user) 54 printf("[014] Expecting user %s, got user() %s\n", $user, $tmp['user']); 55 if ($tmp['dbname'] != $db) 56 printf("[015] Expecting database %s, got database() %s\n", $db, $tmp['dbname']); 57 58 if (!$res = $mysqli->query('SELECT @mysqli_change_user_test_var AS test_var')) 59 printf("[016] [%d] %s\n", $mysqli->errno, $mysqli->error); 60 $tmp = $res->fetch_assoc(); 61 $res->free_result(); 62 if (NULL !== $tmp['test_var']) 63 printf("[017] Test variable is still set!\n"); 64 65 $mysqli->close(); 66 67 if (false !== ($tmp = @$mysqli->change_user($user, $passwd, $db))) 68 printf("[018] Expecting false, got %s/%s\n", gettype($tmp), $tmp); 69 70 print "done!"; 71?> 72--EXPECT-- 73done! 74