ID: 24595
Updated by: [email]sniperphp.net[/email]
Reported By: hans at velum dot net
-Status: Feedback
+Status: Bogus
Bug Type: MSSQL related
Operating System: Windows XP
PHP Version: 5.0.0b1 (beta1)
New Comment:

Same as bug #21089



Previous Comments:
------------------------------------------------------------------------

[2003-08-06 10:38:26] brian_caughlin at hotmail dot com

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 doentation
should be updated to reflect this change.

------------------------------------------------------------------------

[2003-08-05 18:32:42] [email]sniperphp.net[/email]

Please try using this CVS snapshot:

[url]http://snaps.php.net/php4-STABLE-latest.tar.gz[/url]

For Windows:

[url]http://snaps.php.net/win32/php4-win32-STABLE-latest.zip[/url]

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 undoented 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.)

------------------------------------------------------------------------

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
[url]http://bugs.php.net/24595[/url]

--
Edit this bug report at [url]http://bugs.php.net/?id=24595&edit=1[/url]