1--TEST-- 2mysqli_options() - MYSQLI_OPT_INT_AND_FLOAT_NATIVE 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once('skipifconnectfailure.inc'); 8 9require_once('connect.inc'); 10if (!$IS_MYSQLND) 11 die("skip mysqlnd only test"); 12?> 13--FILE-- 14<?php 15 require_once("connect.inc"); 16 17 18 $types = array( 19 'BIT' => array('BIT(8)', 0), 20 'TINYINT' => array('TINYINT', 120), 21 'BOOL' => array('BOOL', 0), 22 'BOOLEAN' => array('BOOLEAN', 1), 23 'SMALLINT' => array('SMALLINT', 32000), 24 'MEDIUMINT' => array('MEDIUMINT', 999), 25 'INT' => array('INT', 999), 26 'BIGINT' => array('BIGINT', 999), 27 'FLOAT' => array('FLOAT', 1.3), 28 'DOUBLE' => array('DOUBLE', -1.3), 29 ); 30 31 foreach ($types as $name => $data) { 32 $link = mysqli_init(); 33 if (!mysqli_options($link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1)) { 34 printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 35 continue; 36 } 37 38 if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { 39 printf("[002] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 40 continue; 41 } 42 43 44 if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) { 45 printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 46 continue; 47 } 48 49 if (!mysqli_query($link, sprintf("CREATE TABLE test (id %s)", $data[0]))) { 50 printf("[004] TODO [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 51 continue; 52 } 53 54 if (!mysqli_query($link, sprintf("INSERT INTO test(id) VALUES (%f)", $data[1]))) { 55 printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 56 continue; 57 } 58 59 if (!$res = mysqli_query($link, "SELECT id FROM test")) { 60 printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 61 continue; 62 } 63 64 $row = mysqli_fetch_assoc($res); 65 mysqli_free_result($res); 66 67 if ($row['id'] !== $data[1]) { 68 printf("[007] Expecting %s - %s/%s got %s/%s\n", 69 $name, 70 $data[1], gettype($data[1]), $row['id'], gettype($row['id'])); 71 } 72 mysqli_close($link); 73 74 $link = mysqli_init(); 75 if (!mysqli_options($link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 0)) { 76 printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 77 continue; 78 } 79 80 if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { 81 printf("[009] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 82 continue; 83 } 84 85 if (!$res = mysqli_query($link, "SELECT id FROM test")) { 86 printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 87 continue; 88 } 89 90 $row = mysqli_fetch_assoc($res); 91 mysqli_free_result($res); 92 93 if (!is_string($row['id']) || ($row['id'] != $data[1])) { 94 printf("[011] Expecting %s - %s/string got %s/%s\n", 95 $name, 96 $data[1], $row['id'], gettype($row['id'])); 97 } 98 mysqli_close($link); 99 100 } 101 102 print "done!"; 103?> 104--CLEAN-- 105<?php 106 require_once("clean_table.inc"); 107?> 108--EXPECT-- 109done! 110