2 Stimmen

PHP Sql Server Ausgabeparameter

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

2voto

Dawson Loudon Punkte 6019

Ich bin mir nicht 100%ig sicher, aber ich glaube, Sie werden aufgefordert, der Ausgabe einen Typ zuzuweisen.
Versuchen Sie, dies zu ändern:

$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)
               );

zu

$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, SQLSRV_PHPTYPE_INT)
               );

ref von: aquí

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X