1--TEST-- 2mysqli_fetch_assoc() - ZEROFILL 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8?> 9--FILE-- 10<?php 11 require_once('connect.inc'); 12 require_once('table.inc'); 13 14 function zerofill($offset, $link, $datatype, $insert = 1) { 15 16 mysqli_query($link, 'ALTER TABLE test DROP zero'); 17 $sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED ZEROFILL', $datatype); 18 if (!mysqli_query($link, $sql)) { 19 // no worries - server might not support it 20 return true; 21 } 22 23 if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s', $insert))) { 24 printf("[%03d] UPDATE failed, [%d] %s\n", 25 $offset, mysqli_errno($link), mysqli_error($link)); 26 return false; 27 } 28 29 if (!($res = mysqli_query($link, 'SELECT zero FROM test LIMIT 1'))) { 30 printf("[%03d] SELECT failed, [%d] %s\n", 31 $offset, mysqli_errno($link), mysqli_error($link)); 32 return false; 33 } 34 35 $row = mysqli_fetch_assoc($res); 36 $meta = mysqli_fetch_fields($res); 37 mysqli_free_result($res); 38 $meta = $meta[0]; 39 $length = $meta->length; 40 if ($length > strlen($insert)) { 41 42 $expected = str_repeat('0', $length - strlen($insert)); 43 $expected .= $insert; 44 if ($expected !== $row['zero']) { 45 printf("[%03d] Expecting '%s' got '%s'\n", $offset, $expected, $row['zero']); 46 return false; 47 } 48 49 } else if ($length <= 1) { 50 printf("[%03d] Length reported is too small to run test\n", $offset); 51 return false; 52 } 53 54 return true; 55 } 56 57 zerofill(2, $link, 'TINYINT'); 58 zerofill(3, $link, 'SMALLINT'); 59 zerofill(4, $link, 'MEDIUMINT'); 60 zerofill(5, $link, 'INT'); 61 zerofill(6, $link, 'INTEGER'); 62 zerofill(7, $link, 'BIGINT'); 63 zerofill(8, $link, 'FLOAT'); 64 zerofill(9, $link, 'DOUBLE'); 65 zerofill(10, $link, 'DOUBLE PRECISION'); 66 zerofill(11, $link, 'DECIMAL'); 67 zerofill(12, $link, 'DEC'); 68 69 mysqli_close($link); 70 71 print "done!"; 72?> 73--CLEAN-- 74<?php 75 require_once("clean_table.inc"); 76?> 77--EXPECT-- 78done! 79