ID: 24595
Comment by: brian_caughlin at hotmail dot com
Reported By: hans at velum dot net
Status: Feedback
Bug Type: MSSQL related
Operating System: Windows XP
PHP Version: 5.0.0b1 (beta1)
New Comment:
This is to confirm that the same behaviour manifests itself in the
latest CVS snapshot, and also that the methods described in the
comments for Bug #21089 apply here. This appears to be a change that
took place in 4.3 which continues to apply to 5.0. The documentation
should be updated to reflect this change.
Previous Comments:
------------------------------------------------------------------------
[2003-08-05 18:32:42] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
and also read the comments in bug #21089
------------------------------------------------------------------------
[2003-08-05 13:31:56] brian_caughlin at hotmail dot com
By the way, it looks like this bug may be a duplicate of Bug #21089.
Perhaps this is simply an undocumented change.
------------------------------------------------------------------------
[2003-08-05 12:20:15] brian_caughlin at hotmail dot com
I ran into this issue myself in 4.3.2, and found that the workaround is
to use the mssql_next_result() function before attempting to access the
retval and any output parameters. I also found that I don't need to
pass the variables by reference.
Here is the code that works for me in 4.3.2:
<?php
$conn=mssql_connect("myhost","user","pwd");
if ($conn) {
mssql_select_db("mydb",$conn);
$stmt=mssql_init("procedure",$conn);
mssql_bind($stmt,"RETVAL",$val,SQLINT4);
$ival=11;
$fval=2.1416;
$sval="Frank";
mssql_bind($stmt,"@sval",$sval,SQLVARCHAR,TRUE);
mssql_bind($stmt,"@intval",$ival,SQLINT4,TRUE);
mssql_bind($stmt,"@floatval",$fval,SQLFLT8,TRUE);
$result=mssql_execute($stmt);
$arr=mssql_fetch_row($result);
print ("Answer: " . $arr[0] . "
" );
mssql_next_result($result);
print ("RETVAL = $val ; intval = $ival ; floatval = $fval ; string =
$sval");
mssql_close($conn);
}
else print("ooops!");
?>
I hope this helps!
------------------------------------------------------------------------
[2003-07-10 14:38:29] hans at velum dot net
Yes, I verified that this is also happening with 4.3.2. I thought,
based on a comment in the manual, that this was not an issue in the
4.3.2 release.
I also verified that the bound values are making it *into* the stored
procedure w/o incident. (E.g. I can add them to the returned result
row to see that the stored procedure is aware of the values.)
------------------------------------------------------------------------
[2003-07-10 12:52:15] sniper@php.net
Does this happen with PHP 4.3.2 ?
------------------------------------------------------------------------
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/24595
--
Edit this bug report at http://bugs.php.net/?id=24595&edit=1