#35203 [Bgs->Opn]: Unable to call multiple stored procedures with single mysql connection

From: Date: Sun, 13 Nov 2005 15:33:04 +0000
Subject: #35203 [Bgs->Opn]: Unable to call multiple stored procedures with single mysql connection
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-88099@lists.php.net to get a copy of this message
ID: 35203 User updated by: kristaps dot kaupe at itrisinajumi dot lv Reported By: kristaps dot kaupe at itrisinajumi dot lv -Status: Bogus +Status: Open Bug Type: MySQLi related Operating System: Gentoo Linux PHP Version: 5.0.5 New Comment: Status change to "Open". Previous Comments: ------------------------------------------------------------------------ [2005-11-13 15:55:15] kristaps dot kaupe at itrisinajumi dot lv Why I should use mysqli_multi_query()? Where is it documented, that I should use mysqli_multi_query() for stored procedures? But the following code with mysqli_multi_query() doesn't work either: ------- // $db is mysqli object if ($db->multi_query('CALL test_proc(1); CALL test_proc(1);')) { if ($result = $db->store_result()) { $res = $result->fetch_assoc(); print_r($res); $result->close(); } else echo '<br />No result!<br />'; $db->next_result(); if ($result = $db->store_result()) { $res = $result->fetch_assoc(); print_r($res); $result->close(); } else echo '<br />No result<br />'; } else echo '<br />'.$db->error.'<br />'; ----- Produces the following output: ----- Array ( [id] => 1 [txt] => test1 ) No result ----- (Expected was two identical results) ------------------------------------------------------------------------ [2005-11-13 08:22:49] georg@php.net For calling stored procedures you have to use mysqli_multi_query. ------------------------------------------------------------------------ [2005-11-13 02:09:29] kristaps dot kaupe at itrisinajumi dot lv Additional thing - when you don't send any requests to Apache and MySQL for some time, sample script seems to work. But just for one request, when you press "Refresh" in your browser and run it second time, it gives output i've posted. ------------------------------------------------------------------------ [2005-11-12 22:27:09] kristaps dot kaupe at itrisinajumi dot lv Description: ------------ Create MySQL test table and procedure: -------------------------------------- CREATE TABLE test_table ( id int(10) unsigned NOT NULL auto_increment, txt varchar(255) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO test_table (txt) VALUES ('test1'); CREATE PROCEDURE test_proc(IN p_id INT(10) UNSIGNED) READS SQL DATA DETERMINISTIC BEGIN SELECT * FROM test_table WHERE id = p_id; END Reproduce code: --------------- // $db is mysqli object if ($result = $db->query('CALL test_proc(1);')) { $res = $result->fetch_assoc(); print_r($res); $result->close(); } else echo '<br />'.$db->error.'<br />'; if ($result = $db->query('CALL test_proc(1);')) { $res = $result->fetch_assoc(); print_r($res); $result->close(); } else echo '<br />'.$db->error.'<br />'; Expected result: ---------------- Array ( [id] => 1 [txt] => test1 ) Array ( [id] => 1 [txt] => test1 ) Actual result: -------------- Array ( [id] => 1 [txt] => test1 ) Lost connection to MySQL server during query ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35203&edit=1

« previous php.bugs (#88099) next »