Bug #50555 [Com]: PDO_DBLIB: Cannot retrieve output parameter from stored procedure

From: Date: Tue, 16 Feb 2016 11:12:40 +0000
Subject: Bug #50555 [Com]: PDO_DBLIB: Cannot retrieve output parameter from stored procedure
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199258@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=50555&edit=1

 ID:                 50555
 Comment by:         craig_carnell at hotmail dot com
 Reported by:        david dot wright at opticsplanet dot com
 Summary:            PDO_DBLIB: Cannot retrieve output parameter from
                     stored procedure
 Status:             Open
 Type:               Bug
 Package:            PDO DBlib
 Operating System:   2.6.24-24-server
 PHP Version:        5.3.1
 Block user comment: N
 Private report:     N

 New Comment:

I am experiencing the same issue with PHP 7.0.3, pdo_dblib and MSSQL 2008. Unfortunately I am having
to resort to pdo_dblib due to the removal of mssql* functions.

Here is my code:

$db = new PDO('dblib:host=myhost:1433;dbname=mydb', 'username',
'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "EXEC Stock_Level @myId=:myId, @StockLevel=:StockLevel";
$stmt = $db->prepare($sql);
$var = '12345';
$var2 = null;
$stmt->bindParam(":myId", $var, PDO::PARAM_STR);
$stmt->bindParam(":StockLevel", $var2, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);

if(!$stmt->execute()) {
    echo "\nPDO::errorCode(): ", $stmt->errorCode();
}

echo "var 2 = " . $var2 . PHP_EOL;

This is a big problem!


Previous Comments:
------------------------------------------------------------------------
[2016-02-12 13:14:34] g at thelettereyediversity dot co dot za

Working with the latest PHP 5.6 and MySQL 5.6.22 and can confirm this is still a bug and affects the
PDO library.

------------------------------------------------------------------------
[2014-05-17 09:05:05] eugene at bcp dot im

This bug/problem whatever you want to call it is not limkted to DBlib - happening on ODBC and
SqlServer... Is anyone looking into this??

------------------------------------------------------------------------
[2010-09-18 21:34:04] ssufficool@php.net

This requires that pdo_dblib pass params using the RPC mechanisms and also to implement it's
own driver level binding instead of relying on the PDO param binding. This will require a rewrite of
most of the statement object.

Rest assured, it is being worked on but may take some time.

------------------------------------------------------------------------
[2010-04-09 10:50:34] a at exampl dot com

For fucks sake would anybody already fix this? It's not the only report about this issue in the
tracker.

------------------------------------------------------------------------
[2009-12-22 22:09:39] david dot wright at opticsplanet dot com

Description:
------------
I cannot retrieve an output parameter from a stored procedure (in my case on SQL Server 2005--am
using PDO_DBLIB.

Reproduce code:
---------------
PHP Code:
---------------------------------------------------
/** SNIP. Set up a valid $db here! **/
$return_value = 999;
$sth = $db->prepare("EXEC dbo.opsp_Test ?");
$sth->bindParam(1, $return_value, PDO::PARAM_STR |
PDO::PARAM_INPUT_OUTPUT, 4);
$sth->execute();
echo "$return_value\n";

Stored Procedure
--------------------------------------------------
CREATE PROCEDURE opsp_Test 
	@TheOutputValue int OUTPUT
AS
BEGIN
	SET @TheOutputValue = 11
END



Expected result:
----------------
output should be: 11

Actual result:
--------------
Output is 999 ($return_value unchanged)


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



--
Edit this bug report at https://bugs.php.net/bug.php?id=50555&edit=1


Thread (15 messages)

« previous php.bugs (#199258) next »