2011-09-16 32 views
2

私はPHPで出力パラメータおよびSQL Server 2008に苦しんだ私はエラーを取得しておいてください。PHP SQL Serverの出力パラメータ

Notice: Undefined variable: UserID in C:\inetpub\wwwroot\PersonalWebsitePHP\Register.php on line 67 Error in executing statementArray ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] => -7 [code] => -7 [2] => An invalid PHP type was specified as an output parameter. DateTime objects, NULL values, and streams cannot be specified as output parameters. [message] => An invalid PHP type was specified as an output parameter. DateTime objects, NULL values, and streams cannot be specified as output parameters.))

マイコード:

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

        } 

私はチュートリアルに従っ正確に。配列の前に$ UserIDを宣言すると、出力パラメータではなく変数に宣言された値が出力されます。私はデータベースでそれらを見ることができるので、入力パラメータは正常に動作します。誰かがこれを手伝ってくれることを願っています。

ダグラス

+0

同じ問題ここ
はこれを変更してみてください。 – Teddy

答えて

2

をありがとう、私は100%確実ではないが、私は、これは出力にタイプを割り当てるためにあなたを求めていると信じています。

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

$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: here

関連する問題