1--TEST-- 2Multiple result set with PS 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once("connect.inc"); 7if (!$IS_MYSQLND) { 8 die("skip mysqlnd only test"); 9} 10require_once('skipifconnectfailure.inc'); 11?> 12--FILE-- 13<?php 14 require_once("connect.inc"); 15 require('table.inc'); 16 17 $stmt = mysqli_stmt_init($link); 18 if (!$link->query('DROP PROCEDURE IF EXISTS p123')) { 19 printf("[001] [%d] %s\n", $link->error, $link->errno); 20 } 21 22 if (!$link->query("CREATE PROCEDURE p123() BEGIN SELECT id+12, CONCAT_WS('-',label,'ahoi') FROM test ORDER BY id LIMIT 1; SELECT id + 42, CONCAT_WS('---',label, label) FROM test ORDER BY id LIMIT 1; END")) { 23 printf("[002] [%d] %s\n", $link->error, $link->errno); 24 } 25 26 if (!($stmt = $link->prepare("CALL p123"))) { 27 printf("[003] [%d] %s\n", $stmt->error, $stmt->errno); 28 } 29 30 if (!$stmt->execute()) { 31 printf("[005] [%d] %s\n", $stmt->error, $stmt->errno); 32 } 33 34 $c_id = NULL; 35 $c_label = NULL; 36 if (!$stmt->bind_result($c_id, $c_label)) { 37 printf("[004] [%d] %s\n", $stmt->error, $stmt->errno); 38 } 39 var_dump("pre:",$c_id, $c_label); 40 41 if (!$stmt->fetch()) { 42 printf("[006] [%d] %s\n", $stmt->error, $stmt->errno); 43 } 44 45 var_dump("post:",$c_id, $c_label); 46 47 if ($stmt->fetch()) { 48 printf("[007] Shouldn't have fetched anything\n"); 49 var_dump($c_id, $c_label); 50 } 51 52 if ($stmt->fetch()) { 53 printf("[008] No more rows expected\n"); 54 } 55 56 if (!$stmt->more_results()) { 57 printf("[009] Expected more results\n"); 58 } else { 59 var_dump("[009] next_result:", $stmt->next_result()); 60 } 61 62 if (!$stmt->bind_result($c_id, $c_label)) { 63 printf("[010] [%d] %s\n", $stmt->error, $stmt->errno); 64 } 65 var_dump("pre:",$c_id, $c_label); 66 67 if (!$stmt->fetch()) { 68 printf("[011] [%d] %s\n", $stmt->error, $stmt->errno); 69 } 70 71 var_dump("post:",$c_id, $c_label); 72 73 if ($stmt->fetch()) { 74 printf("[012] No more rows expected\n"); 75 } 76 77 if (!$stmt->more_results()) { 78 printf("[013] Expected more results\n"); 79 } else { 80 var_dump("[013] next_result:", $stmt->next_result()); 81 } 82 83 if ($stmt->more_results()) { 84 printf("[014] No more results expected\n"); 85 } else { 86 printf("[014] No result, as expected\n"); 87 } 88 89 $stmt->close(); 90 $link->close(); 91 92 93 echo "done"; 94?> 95--CLEAN-- 96<?php 97 require_once("connect.inc"); 98 if (!$link->query('DROP PROCEDURE IF EXISTS p123')) { 99 printf("[001] [%d] %s\n", $link->error, $link->errno); 100 } 101?> 102--EXPECT-- 103string(4) "pre:" 104NULL 105NULL 106string(5) "post:" 107int(13) 108string(6) "a-ahoi" 109string(18) "[009] next_result:" 110bool(true) 111string(4) "pre:" 112int(13) 113string(6) "a-ahoi" 114string(5) "post:" 115int(43) 116string(5) "a---a" 117string(18) "[013] next_result:" 118bool(true) 119[014] No result, as expected 120done 121