1--TEST-- 2GH-12107 (When running a stored procedure (that returns a result set) twice, PHP crashes) 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once 'skipifconnectfailure.inc'; 8?> 9--FILE-- 10<?php 11require_once 'connect.inc'; 12 13$mysqli = new mysqli("$host:$port", $user, $passwd, $db); 14 15$sql = <<<SQL 16CREATE PROCEDURE `gh12107`() 17BEGIN 18 SELECT "hello world"; 19END; 20SQL; 21$mysqli->query($sql); 22 23echo "Start or run 1\n"; 24$stmt = $mysqli->prepare("call `gh12107`()"); 25$stmt->execute(); 26$stmt->bind_result($output); 27var_dump($stmt->fetch()); 28var_dump($output); 29unset($output); 30echo "End of run 1\n"; 31 32echo "Start or run 2\n"; 33$stmt->execute(); 34$stmt->bind_result($output); 35var_dump($stmt->fetch()); 36var_dump($output); 37echo "End of run 2\n"; 38 39?> 40--CLEAN-- 41<?php 42require_once 'connect.inc'; 43if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) 44 printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); 45 46if (!mysqli_query($link, "DROP PROCEDURE IF EXISTS gh12107")) 47 printf("[c002] Cannot drop procedure, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 48 49mysqli_close($link); 50?> 51--EXPECT-- 52Start or run 1 53bool(true) 54string(11) "hello world" 55End of run 1 56Start or run 2 57bool(true) 58string(11) "hello world" 59End of run 2 60