PHP PDO (MSSQL) kann keine OUPUT-Parameter erhalten

Ich versuche OUTPUT mit bindParam (PHP PDO) zu bekommen. Die PHP-PDO-Bibliothek ist der FreeTDS für MS SQL-Treiber. Was auch immer ich tue, ich kann nicht scheinen, das "OUTPUT" in den gebundenen Parametern zu erhalten, wie auf php.net vorgeschlagen. Ich habe überprüft, ob ich die EXEC aufrufen und eine Ergebnismenge zurückgeben kann (mit einem Select), aber die OUTPUT-Parameter ändern sich nie.

PHP Code. $ this-> db ist ein PDO-Objekt

$stmt = $this->db->prepare("EXEC ".$this->db_schema."[".$this->procedure."] :error_num, :error_msg");
$error_num = 0;
$error_msg = '';
$stmt->bindParam(':error_num', $error_num, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);
$stmt->bindParam(':error_msg', $error_msg, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 2000);
$stmt->execute();
var_dump($stmt);
echo "\nerror_num: $error_num";
echo "\nerror_msg: $error_msg\n\n";

Gespeicherte Prozedur für Test OUTPUT

USE [NGCustom]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [web].[addTest] (
    @error_num int OUTPUT,
    @error_msg VARCHAR(MAX) OUTPUT
)

AS

BEGIN 
SET @error_num = 99
SET @error_msg = 'Error! Oh my gosh!'
END
GO

Ausgabe von PHP:

object(PDOStatement)#77 (1) {
  ["queryString"]=>
  string(54) "EXEC [NGCustom].[web].[addTest] :error_num, :error_msg"
}

error_num: 0
error_msg: 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage