2011-09-16 3 views
2

출력 매개 변수 :PHP는 SQL 서버 내가 오류가 계속 PHP에서 출력 매개 변수 및 SQL Server 2008과 사투를 벌인거야

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를 선언하면 output 매개 변수가 아니라 변수에 선언 된 값이 출력됩니다. 입력 매개 변수는 데이터베이스에서 볼 수 있으므로 제대로 작동합니다. 누군가가 이걸 도울 수 있기를 바랍니다.

당신에게

더글라스

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

에 : 여기 here

관련 문제