php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #50555 PDO_DBLIB: Cannot retrieve output parameter from stored procedure
Submitted: 2009-12-22 22:09 UTC Modified: 2014-01-01 12:49 UTC
Votes:27
Avg. Score:4.8 ± 0.5
Reproduced:26 of 26 (100.0%)
Same Version:3 (11.5%)
Same OS:4 (15.4%)
From: david dot wright at opticsplanet dot com Assigned:
Status: Open Package: PDO DBlib
PHP Version: 5.3.1 OS: 2.6.24-24-server
Private report: No CVE-ID:
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: david dot wright at opticsplanet dot com
New email:
PHP Version: OS:

 

 [2009-12-22 22:09 UTC] 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)

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-04-09 10:50 UTC] 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.
 [2010-09-18 21:34 UTC] 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.
 [2013-06-12 04:05 UTC] ssufficool@php.net
-Summary: Cannot retrieve output parameter from stored procedure +Summary: PDO_DBLIB: Cannot retrieve output parameter from stored procedure
 [2014-01-01 12:49 UTC] felipe@php.net
-Package: PDO related +Package: PDO DBlib
 [2014-05-17 09:05 UTC] 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??
 [2016-02-12 13:14 UTC] 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.
 [2016-02-16 11:12 UTC] craig_carnell at hotmail dot com
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!
 [2016-09-12 22:01 UTC] adambaratz@php.net
Alternate test case in #70274.
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Fri Feb 24 19:01:40 2017 UTC