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: