From:             hans at velum dot net
Operating system: Windows XP
PHP version:      5.0.0b1 (beta1)
PHP Bug Type:     MSSQL related
Bug description:  Cannot bind output variables.

Description:
------------
When using mssql_bind() to bind an output variable, the variable is passed
into the stored procedure but the modified value is not returned.  (The
variable is being passed by reference to mssql_bind()).

Reproduce code:
---------------
I used the following user-contributed example from mssql_execute manual
page.


if we have this procedure: 

CREATE PROCEDURE [procedure] 
( 
  @sval varchar(50) OUTPUT, 
  @intval int OUTPUT, 
  @floatval decimal(6,4) OUTPUT 
) AS 

if @intval is null 
select '@intval is null' as answer 
else 
select '@intval is NOT null' as answer 

set @sval='Hello ' + @sval 
set @[EMAIL PROTECTED] 
set @[EMAIL PROTECTED] 

return 10 

We can use this PHP code: 

<?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] . "
" ); 
print ("RETVAL = $val ; intval = $ival ; floatval = $fval ; string =
$sval"); 

mssql_close($conn); 
} 
else print("ooops!"); 


Expected result:
----------------
Answer: @intval is NOT nullRETVAL = 10 ; intval = 12 ; floatval = 3.1416 ;
string = Hello Frank

Actual result:
--------------
Answer: @intval is NOT nullRETVAL = 0 ; intval = 11 ; floatval = 2.1416 ;
string = Frank

-- 
Edit bug report at http://bugs.php.net/?id=24595&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=24595&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=24595&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=24595&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=24595&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=24595&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=24595&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=24595&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=24595&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=24595&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=24595&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=24595&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24595&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=24595&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=24595&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=24595&r=gnused

Reply via email to