Ich habe Probleme mit einem Ausgabeparameter in PHP und SQL Server 2008. Ich erhalte ständig die Fehlermeldung:
Hinweis: Undefinierte Variable: UserID in C:\inetpub\wwwroot\PersonalWebsitePHP\Register.php on line 67 Fehler bei der Ausführung von statementArray ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -7 [code] => -7 [2] => Ein ungültiger PHP-Typ wurde als Ausgabeparameter angegeben. DateTime-Objekte, NULL-Werte und Streams können nicht als Ausgabeparameter angegeben werden. [message] => Es wurde ein ungültiger PHP-Typ als Ausgabeparameter angegeben. DateTime-Objekte, NULL-Werte und Streams können nicht als Ausgabeparameter angegeben werden. ) )
Mein Code:
$con = sqlsrv_connect(".\SQLExpress", $connectionInfo);
if ($con === false) {
echo "Could not connect \n";
die(print_r(sqlsrv_errors(), true));
}
$params = array(
array($_POST["FirstName"], SQLSRV_PARAM_IN),
array($_POST["LastName"], SQLSRV_PARAM_IN),
array($_POST["Email"], SQLSRV_PARAM_IN),
array($_POST["Username"], SQLSRV_PARAM_IN),
array(md5($_POST["Password"]), SQLSRV_PARAM_IN),
array(date("Y-m-d H:i:s"), SQLSRV_PARAM_IN),
array($_SERVER["REMOTE_ADDR"], SQLSRV_PARAM_IN),
array("Member", SQLSRV_PARAM_IN),
array("No", SQLSRV_PARAM_IN),
array($UserID, SQLSRV_PARAM_OUT)
);
$tsql_callSP = "{call InsertUser(?,?,?,?,?,?,?,?,?,?)}";
$stmt3 = sqlsrv_query($con, $tsql_callSP, $params);
if ($stmt3 === false) {
echo "Error in executing statement";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_next_result($stmt3);
echo "Hi " . $_POST["FirstName"] . ", your User ID is " . $UserID . ".";
}
} else {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again.");
}
Ich habe die Anleitungen genau befolgt. Wenn ich $UserID vor dem Array deklariere, wird nur der in der Variablen deklarierte Wert und nicht der Ausgabeparameter ausgedruckt. Die Eingabeparameter funktionieren gut, da ich sie in der Datenbank sehen kann. Ich hoffe, dass jemand bei diesem Problem helfen kann.
Dankeschön
Douglas