ID: 42548
Comment by: uwendel at mysql dot com
Reported By: garethjo at usc dot edu
Status: Assigned
Bug Type: MySQLi related
Operating System: Windows XP, Windows 2003
PHP Version: 5.2.4
Assigned To: georg
New Comment:
Your code snippets does not show proper usage of mysqli_multi_query().
Stored Procedures that return n result sets will return n + 1 result
sets. In your case, it's two result sets to fetch and eat up before you
can reuse the line. The error message from the server is exactly about
that. Proper usage of mysqli_multi_query() looks like this:
if (mysqli_multi_query($link, 'CALL p()')) {
do {
if ($res = mysqli_store_result($link)) {
while ($row = mysqli_fetch_assoc($res))
var_dump($row);
mysqli_free_result($res);
}
} while (mysqli_more_results($link) && mysqli_next_result($link));
} else {
printf("Cannot call SP, [%d] %s\n",
mysqli_errno($link), mysqli_error($link));
}
I see you replacing mysqli_[real_]query() with mysqli_multi_query() but
I do not see the more_results()/next_result() loop etc. You continue
using the syntax for SPs which do not return a result set.
Ulf
Previous Comments:
------------------------------------------------------------------------
[2007-09-11 17:44:25] al dot smith at aeschi dot ch dot eu dot org
$query = "CALL count_runs(".$row["id"].", ".$minyear.",
".$maxyear.")";
$db->multi_query($query) or die ("Error in query: $query. " .
$db->error);
This was my query.
------------------------------------------------------------------------
[2007-09-11 15:54:04] garethjo at usc dot edu
No it doesn't, I tried it with both before sending in the bug report.
------------------------------------------------------------------------
[2007-09-11 10:00:30] uwendel at mysql dot com
Does using mysqli_multi_query() work for you? Currently you are using
mysqli_real_query() to call the SP. See also,
http://dev.mysql.com/doc/refman/5.1/en/call.html. If a stored procedure
produces result sets, you must use mysqli_multi_query().
Ulf
------------------------------------------------------------------------
[2007-09-09 10:42:13] [EMAIL PROTECTED]
Georg (or whoever maintains mysqli nowadays), check this out. Seems
like some regression bug between 5.2.3 / 5.2.4 crept in..
------------------------------------------------------------------------
[2007-09-07 18:00:17] al dot smith at aeschi dot ch dot eu dot org
I'm seeing this exact bug as well. Rolling back to 5.2.3 fixes the
problem.
For me, executing the CALL() statement within a mysql> client session
works just fine...
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/42548
--
Edit this bug report at http://bugs.php.net/?id=42548&edit=1