1--TEST-- 2mysqli_get_warnings() - TODO 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8require_once('connect.inc'); 9if (!$TEST_EXPERIMENTAL) 10 die("skip - experimental (= unsupported) feature"); 11?> 12--FILE-- 13<?php 14 require_once("connect.inc"); 15 16 $tmp = NULL; 17 $link = NULL; 18 19 if (!is_null($tmp = @mysqli_get_warnings())) 20 printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 21 22 if (!is_null($tmp = @mysqli_get_warnings($link))) 23 printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 24 25 if (!is_null($tmp = @mysqli_get_warnings(''))) 26 printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 27 28 if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) { 29 printf("[003] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 30 } 31 32 if (false !== ($tmp = mysqli_get_warnings($link))) { 33 printf("[004] Expecting boolean/false, got %s/%s\n", gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp)); 34 } 35 36 if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) 37 printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 38 39 if (!mysqli_query($link, "CREATE TABLE test (id SMALLINT)")) 40 printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 41 42 if (!mysqli_query($link, "INSERT INTO test (id) VALUES (1000000)")) 43 printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 44 45 if (!is_object($warning = mysqli_get_warnings($link)) || 'mysqli_warning' != get_class($warning)) { 46 printf("[008] Expecting object/mysqli_warning, got %s/%s\n", gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp)); 47 } 48 49 if (!method_exists($warning, 'next')) 50 printf("[009] Borked object, method next is missing\n"); 51 52 $properties = array_merge(get_object_vars($warning), get_class_vars(get_class($warning))); 53 if (!empty($properties)) 54 printf("[010] Properties have always been magic, hidden things - why are they visible now, a BC break...\n"); 55 56 if ((!is_string($warning->message)) || ('' == $warning->message)) /* NULL or not there at all */ 57 printf("[011] Expecting string/not empty, got %s/%s\n", gettype($warning->message), $warning->message); 58 59 if ((!is_string($warning->sqlstate)) || ('' == $warning->sqlstate)) /* NULL or not there at all */ 60 printf("[012] Expecting string/not empty, got %s/%s\n", gettype($warning->sqlstate), $warning->sqlstate); 61 62 if ((!is_int($warning->errno)) || (0 == $warning->errno)) /* NULL or not there at all */ 63 printf("[013] Expecting int/not 0, got %s/%s\n", gettype($warning->errno), $warning->errno); 64 65 if (false !== ($tmp = $warning->next())) 66 printf("[014] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); 67 68 if (!mysqli_query($link, "INSERT INTO test (id) VALUES (1000000), (1000001)")) 69 printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 70 71 if (($tmp = mysqli_warning_count($link)) !== 2) 72 printf("[016] Expecting 2 warnings, got %d warnings", $tmp); 73 74 if (!is_object($warning = mysqli_get_warnings($link)) || 'mysqli_warning' != get_class($warning)) { 75 printf("[017] Expecting object/mysqli_warning, got %s/%s\n", gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp)); 76 } 77 78 if (true !== ($tmp = $warning->next())) 79 printf("[018] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); 80 81 if (false !== ($tmp = $warning->next())) 82 printf("[020] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 83 84 mysqli_close($link); 85 86 87 if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) 88 printf("[021] Cannot create mysqli object: [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 89 90 if (!$mysqli->query("DROP TABLE IF EXISTS t1")) 91 printf("[022] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 92 93 if (!$mysqli->query("CREATE TABLE t1 (a smallint)")) 94 printf("[023] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 95 96 if (!is_object($warning = new mysqli_warning($mysqli))) 97 printf("[024] Expecting object/mysqli_warning, got %s/%s", gettype($warning), $warning); 98 99 if (!is_string($warning->message) || ('' == $warning->message)) 100 printf("[025] Expecting string, got %s/%s", gettype($warning->message), $warning->message); 101 102 if (!$mysqli->query("DROP TABLE t1")) 103 printf("[026] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 104 105 /* Yes, I really want to check if the object property is empty */ 106 if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) 107 printf("[027] Cannot create mysqli object: [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 108 109 $warning = new mysqli_warning($mysqli); 110 if (false !== ($tmp = $warning->next())) 111 printf("[028] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 112 113 if ('' != ($tmp = $warning->message)) 114 printf("[029] Expecting string/empty, got %s/%s\n", gettype($tmp), $tmp); 115 116 if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) 117 printf("[030] Cannot create mysqli object: [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 118 119 if (!$mysqli->query("DROP TABLE IF EXISTS t1")) 120 printf("[031] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 121 122 if (!$mysqli->query("CREATE TABLE t1 (a smallint)")) 123 printf("[032] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 124 125 /* out of range, three warnings */ 126 if (!$mysqli->query("INSERT IGNORE INTO t1(a) VALUES (65536), (65536), (65536)")) 127 printf("[033] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 128 129 $warning = new mysqli_warning($mysqli); 130 $i = 1; 131 while ($warning->next() && ('' != ($tmp = $warning->message))) { 132 if ((version_compare(PHP_VERSION, '6.0', '==') == 1) && 133 !is_unicode($tmp)) 134 printf("[033a] Warning should have been a unicode string, got %s/%s", gettype($tmp), $tmp); 135 $i++; 136 } 137 if (3 != $i) 138 printf("[034] Expecting three warnings, got %d warnings\n", $i); 139 140 $stmt = mysqli_stmt_init(); 141 $warning = new mysqli_warning($stmt); 142 if (false !== ($tmp = $warning->next())) 143 printf("[035] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 144 145 print "done!"; 146?> 147<?php 148require_once("connect.inc"); 149if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) 150 printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 151 152if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) 153 printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 154 155if (!mysqli_query($link, "DROP TABLE IF EXISTS t1")) 156 printf("[c003] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 157 158mysqli_close($link); 159?> 160--EXPECTF-- 161done! 162