1--TEST-- 2mysqli_next_result() 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 13 $strict_on = false; 14 if (defined('E_STRICT')) { 15 error_reporting(((int)ini_get('error_reporting')) | E_STRICT ); 16 $strict_on = true; 17 } 18 19 $tmp = NULL; 20 $link = NULL; 21 22 if (!is_null($tmp = @mysqli_next_result())) 23 printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 24 25 if (!is_null($tmp = @mysqli_next_result($link))) 26 printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 27 28 require('table.inc'); 29 30 if ($strict_on) 31 ob_start(); 32 33 if (false !== ($tmp = mysqli_next_result($link))) 34 printf("[003] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 35 36 if ($strict_on) { 37 $tmp = ob_get_contents(); 38 ob_end_clean(); 39 if (!preg_match('@Strict Standards: mysqli_next_result\(\): There is no next result set@ismU', $tmp)) { 40 printf("[003a] Strict Standards warning missing\n"); 41 } else { 42 $tmp = trim(preg_replace('@Strict Standards: mysqli_next_result\(\).*on line \d+@ism', '', $tmp)); 43 } 44 print trim($tmp) . "\n"; 45 ob_start(); 46 } 47 48 $res = mysqli_query($link, "SELECT 1 AS res"); 49 if (false !== ($tmp = mysqli_next_result($link))) 50 printf("[004] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 51 52 if ($strict_on) { 53 $tmp = ob_get_contents(); 54 ob_end_clean(); 55 if (!preg_match('@Strict Standards: mysqli_next_result\(\): There is no next result set@ismU', $tmp)) { 56 printf("[004a] Strict Standards warning missing\n"); 57 } else { 58 $tmp = trim(preg_replace('@Strict Standards: mysqli_next_result\(\).*on line \d+@ism', '', $tmp)); 59 } 60 print trim($tmp) . "\n"; 61 } 62 63 mysqli_free_result($res); 64 65 function func_test_mysqli_next_result($link, $query, $offset, $num_results, $strict_on) { 66 67 if (!mysqli_multi_query($link, $query)) 68 printf("[%03d] [%d] %s\n", $offset, mysqli_errno($link), mysqli_error($link)); 69 70 $i = 0; 71 if ($strict_on) 72 ob_start(); 73 74 do { 75 if ($res = mysqli_store_result($link)) { 76 mysqli_free_result($res); 77 $i++; 78 } 79 } while (true === mysqli_next_result($link)); 80 81 if ($strict_on) { 82 $tmp = ob_get_contents(); 83 ob_end_clean(); 84 if (!preg_match('@Strict Standards: mysqli_next_result\(\): There is no next result set@ismU', $tmp)) { 85 printf("[%03d] Strict Standards warning missing\n", $offset + 1); 86 } else { 87 $tmp = trim(preg_replace('@Strict Standards: mysqli_next_result\(\).*on line \d+@ism', '', $tmp)); 88 } 89 print trim($tmp) . "\n"; 90 } 91 92 if ($i !== $num_results) { 93 printf("[%03d] Expecting %d result(s), got %d result(s)\n", $offset + 2, $num_results, $i); 94 } 95 96 if (mysqli_more_results($link)) 97 printf("[%03d] mysqli_more_results() indicates more results than expected\n", $offset + 3); 98 99 if (!($res = mysqli_query($link, "SELECT 1 AS b"))) { 100 printf("[%03d] [%d] %s\n", $offset + 4, mysqli_errno($link), mysqli_error($link)); 101 } else { 102 mysqli_free_result($res); 103 } 104 105 } 106 107 func_test_mysqli_next_result($link, "SELECT 1 AS a; SELECT 1 AS a, 2 AS b; SELECT id FROM test ORDER BY id LIMIT 3", 5, 3, $strict_on); 108 func_test_mysqli_next_result($link, "SELECT 1 AS a; INSERT INTO test(id, label) VALUES (100, 'y'); SELECT 1 AS a, 2 AS b", 8, 2, $strict_on); 109 func_test_mysqli_next_result($link, "DELETE FROM test WHERE id >= 100; SELECT 1 AS a; ", 11, 1, $strict_on); 110 111 mysqli_close($link); 112 113 var_dump(mysqli_next_result($link)); 114 115 print "done!"; 116?> 117--CLEAN-- 118<?php 119 require_once("clean_table.inc"); 120?> 121--EXPECTF-- 122Warning: mysqli_next_result(): Couldn't fetch mysqli in %s on line %d 123NULL 124done!