1--TEST-- 2mysqli_stmt_get_result() 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8if (!function_exists('mysqli_stmt_get_result')) 9 die('skip mysqli_stmt_get_result not available'); 10?> 11--FILE-- 12<?php 13 /* 14 NOTE: no datatype tests here! This is done by 15 mysqli_stmt_bind_result.phpt already. Restrict 16 this test case to the basics. 17 */ 18 require_once("connect.inc"); 19 20 $tmp = NULL; 21 $link = NULL; 22 23 if (!is_null($tmp = @mysqli_stmt_get_result())) 24 printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 25 26 if (!is_null($tmp = @mysqli_stmt_get_result($link))) 27 printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 28 29 require('table.inc'); 30 31 if (!$stmt = mysqli_stmt_init($link)) 32 printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 33 34 if (!is_null($tmp = @mysqli_stmt_get_result($stmt, "foo"))) 35 printf("[004] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 36 37 if (!mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 1")) 38 printf("[005] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 39 40 if (!mysqli_stmt_execute($stmt)) 41 printf("[006] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 42 43 if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { 44 printf("[007] Expecting object/mysqli_result got %s/%s, [%d] %s\n", 45 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 46 } 47 while ($row = mysqli_fetch_assoc($res)) 48 var_dump($row); 49 var_dump(mysqli_fetch_assoc($res)); 50 mysqli_free_result($res); 51 52 if (false !== ($res = mysqli_stmt_get_result($stmt))) { 53 printf("[008] boolean/false got %s/%s, [%d] %s\n", 54 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 55 } 56 57 mysqli_stmt_execute($stmt); 58 if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { 59 printf("[009] Expecting object/mysqli_result got %s/%s, [%d] %s\n", 60 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 61 } 62 while ($row = mysqli_fetch_assoc($res)) 63 var_dump($row); 64 var_dump(mysqli_fetch_assoc($res)); 65 mysqli_free_result($res); 66 67 mysqli_stmt_close($stmt); 68 69 if (!($stmt = mysqli_stmt_init($link)) || 70 !mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2") || 71 !mysqli_stmt_execute($stmt)) 72 printf("[010] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 73 74 $id = $label = null; 75 if (!mysqli_stmt_bind_result($stmt, $id, $label)) 76 printf("[011] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 77 78 if (!mysqli_stmt_fetch($stmt)) 79 printf("[012] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 80 81 if (false !== ($res = mysqli_stmt_get_result($stmt))) { 82 printf("[013] boolean/false got %s/%s, [%d] %s\n", 83 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 84 } 85 86 mysqli_stmt_close($stmt); 87 88 if (!($stmt = mysqli_stmt_init($link)) || 89 !mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2") || 90 !mysqli_stmt_execute($stmt)) 91 printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 92 93 if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { 94 printf("[015] Expecting object/mysqli_result got %s/%s, [%d] %s\n", 95 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 96 } 97 98 $id = $label = null; 99 if (!mysqli_stmt_bind_result($stmt, $id, $label)) 100 printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 101 102 if (!mysqli_stmt_fetch($stmt)) 103 printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 104 105 mysqli_stmt_close($stmt); 106 107 if (!($stmt = mysqli_stmt_init($link)) || 108 !mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2") || 109 !mysqli_stmt_execute($stmt)) 110 printf("[018] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 111 112 if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { 113 printf("[019] Expecting object/mysqli_result got %s/%s, [%d] %s\n", 114 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 115 } 116 117 $id = $label = null; 118 if (!mysqli_stmt_bind_result($stmt, $id, $label)) 119 printf("[020] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 120 121 $row = mysqli_fetch_assoc($res); 122 if (NULL !== $id || NULL !== $label) 123 printf("[021] Bound variables should not have been set\n"); 124 mysqli_free_result($res); 125 126 mysqli_stmt_close($stmt); 127 128 if (!($stmt = mysqli_stmt_init($link)) || 129 !mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2") || 130 !mysqli_stmt_execute($stmt)) 131 printf("[022] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 132 133 if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { 134 printf("[023] Expecting object/mysqli_result got %s/%s, [%d] %s\n", 135 gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); 136 } 137 if (!in_array($res->type, array(MYSQLI_STORE_RESULT, MYSQLI_USE_RESULT))) { 138 printf("[024] Unknown result set type %s\n", $res->type); 139 } 140 if ($res->type !== MYSQLI_STORE_RESULT) 141 printf("[025] Expecting int/%d got %s/%s", MYSQLI_STORE_RESULT, gettype($res->type), $res->type); 142 143 mysqli_free_result($res); 144 mysqli_stmt_close($stmt); 145 mysqli_close($link); 146 147 if (NULL !== ($res = mysqli_stmt_get_result($stmt))) { 148 printf("[022] Expecting NULL got %s/%s\n", 149 gettype($res), $res); 150 } 151 152 print "done!"; 153?> 154--CLEAN-- 155<?php 156 require_once("clean_table.inc"); 157?> 158--EXPECTF-- 159array(2) { 160 [%u|b%"id"]=> 161 int(1) 162 [%u|b%"label"]=> 163 %unicode|string%(1) "a" 164} 165NULL 166array(2) { 167 [%u|b%"id"]=> 168 int(1) 169 [%u|b%"label"]=> 170 %unicode|string%(1) "a" 171} 172NULL 173[017] [2014] Commands out of sync; you can't run this command now 174 175Warning: mysqli_stmt_get_result(): Couldn't fetch mysqli_stmt in %s on line %d 176done!