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