1--TEST-- 2mysqli_options() 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifconnectfailure.inc'); 7?> 8--FILE-- 9<?php 10 require_once("connect.inc"); 11 12 $valid_options = array( 13 MYSQLI_READ_DEFAULT_GROUP => "MYSQLI_READ_DEFAULT_GROUP", 14 MYSQLI_READ_DEFAULT_FILE => "MYSQLI_READ_DEFAULT_FILE", 15 MYSQLI_OPT_CONNECT_TIMEOUT => "MYSQLI_OPT_CONNECT_TIMEOUT", 16 MYSQLI_OPT_LOCAL_INFILE => "MYSQLI_OPT_LOCAL_INFILE", 17 MYSQLI_INIT_COMMAND => "MYSQLI_INIT_COMMAND", 18 MYSQLI_SET_CHARSET_NAME => "MYSQLI_SET_CHARSET_NAME", 19 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT => "MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", 20 ); 21 22 if ($IS_MYSQLND && defined('MYSQLI_OPT_NET_CMD_BUFFER_SIZE')) 23 $valid_options[] = constant('MYSQLI_OPT_NET_CMD_BUFFER_SIZE'); 24 if ($IS_MYSQLND && defined('MYSQLI_OPT_NET_READ_BUFFER_SIZE')) 25 $valid_options[] = constant('MYSQLI_OPT_NET_READ_BUFFER_SIZE'); 26 if ($IS_MYSQLND && defined('MYSQLI_OPT_INT_AND_FLOAT_NATIVE')) 27 $valid_options[] = constant('MYSQLI_OPT_INT_AND_FLOAT_NATIVE'); 28 29 $link = mysqli_init(); 30 31 /* set it twice, checking if memory for the previous one is correctly freed */ 32 mysqli_options($link, MYSQLI_SET_CHARSET_NAME, "utf8"); 33 mysqli_options($link, MYSQLI_SET_CHARSET_NAME, "latin1"); 34 35 // print "run_tests.php don't fool me with your 'ungreedy' expression '.+?'!\n"; 36 var_dump("MYSQLI_READ_DEFAULT_GROUP", mysqli_options($link, MYSQLI_READ_DEFAULT_GROUP, 'extra_my.cnf')); 37 var_dump("MYSQLI_READ_DEFAULT_FILE", mysqli_options($link, MYSQLI_READ_DEFAULT_FILE, 'extra_my.cnf')); 38 var_dump("MYSQLI_OPT_CONNECT_TIMEOUT", mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 10)); 39 var_dump("MYSQLI_OPT_LOCAL_INFILE", mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, 1)); 40 var_dump("MYSQLI_INIT_COMMAND", mysqli_options($link, MYSQLI_INIT_COMMAND, array('SET AUTOCOMMIT=0', 'SET AUTOCOMMIT=1'))); 41 42 if (!$link2 = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) 43 printf("[006] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n", 44 $host, $user, $db, $port, $socket); 45 46 if (!$res = mysqli_query($link2, 'SELECT version() AS server_version')) 47 printf("[007] [%d] %s\n", mysqli_errno($link2), mysqli_error($link2)); 48 $tmp = mysqli_fetch_assoc($res); 49 mysqli_free_result($res); 50 $version = explode('.', $tmp['server_version']); 51 if (empty($version)) 52 printf("[008] Cannot determine server version, need MySQL Server 4.1+ for the test!\n"); 53 54 if ($version[0] <= 4 && $version[1] < 1) 55 printf("[009] Need MySQL Server 4.1+ for the test!\n"); 56 57 if (!$res = mysqli_query($link2, "SHOW CHARACTER SET")) 58 printf("[010] Cannot get list of available character sets, [%d] %s\n", 59 mysqli_errno($link2), mysqli_error($link2)); 60 61 $charsets = array(); 62 while ($row = mysqli_fetch_assoc($res)) 63 $charsets[] = $row; 64 mysqli_free_result($res); 65 mysqli_close($link2); 66 67 foreach ($charsets as $charset) { 68 $k = $charset['Charset']; 69 /* The server currently 17.07.2007 can't handle data sent in ucs2 */ 70 /* The server currently 16.08.2010 can't handle data sent in utf16 and utf32 */ 71 if ($charset['Charset'] == 'ucs2' || $charset['Charset'] == 'utf16' || $charset['Charset'] == 'utf32') { 72 continue; 73 } 74 if (true !== mysqli_options($link, MYSQLI_SET_CHARSET_NAME, $charset['Charset'])) { 75 printf("[009] Setting charset name '%s' has failed\n", $charset['Charset']); 76 } 77 } 78 79 var_dump("MYSQLI_READ_DEFAULT_GROUP", mysqli_options($link, MYSQLI_READ_DEFAULT_GROUP, 'extra_my.cnf')); 80 var_dump("MYSQLI_READ_DEFAULT_FILE", mysqli_options($link, MYSQLI_READ_DEFAULT_FILE, 'extra_my.cnf')); 81 var_dump("MYSQLI_OPT_CONNECT_TIMEOUT", mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 10)); 82 var_dump("MYSQLI_OPT_LOCAL_INFILE", mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, 1)); 83 var_dump("MYSQLI_INIT_COMMAND", mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT=0')); 84 85 /* mysqli_real_connect() */ 86 var_dump("MYSQLI_CLIENT_SSL", mysqli_options($link, MYSQLI_CLIENT_SSL, 'not a mysqli_option')); 87 88 mysqli_close($link); 89 90 echo "Link closed\n"; 91 try { 92 mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT=1'); 93 } catch (Error $exception) { 94 echo $exception->getMessage() . "\n"; 95 } 96 97 print "done!"; 98?> 99--EXPECTF-- 100%s(25) "MYSQLI_READ_DEFAULT_GROUP" 101bool(true) 102%s(24) "MYSQLI_READ_DEFAULT_FILE" 103bool(true) 104%s(26) "MYSQLI_OPT_CONNECT_TIMEOUT" 105bool(true) 106%s(23) "MYSQLI_OPT_LOCAL_INFILE" 107bool(true) 108 109Warning: Array to string conversion in %s on line %d 110%s(19) "MYSQLI_INIT_COMMAND" 111bool(true) 112%s(25) "MYSQLI_READ_DEFAULT_GROUP" 113bool(true) 114%s(24) "MYSQLI_READ_DEFAULT_FILE" 115bool(true) 116%s(26) "MYSQLI_OPT_CONNECT_TIMEOUT" 117bool(true) 118%s(23) "MYSQLI_OPT_LOCAL_INFILE" 119bool(true) 120%s(19) "MYSQLI_INIT_COMMAND" 121bool(true) 122%s(17) "MYSQLI_CLIENT_SSL" 123bool(false) 124Link closed 125mysqli object is already closed 126done! 127