【问题标题】:PHP Sql Server Output ParameterPHP Sql Server 输出参数
【发布时间】:2011-11-18 15:50:39
【问题描述】:

我在 PHP 和 SQL Server 2008 中遇到输出参数问题。我不断收到错误消息:

注意:未定义变量:第 67 行 C:\inetpub\wwwroot\PersonalWebsitePHP\Register.php 中的用户 ID 执行 statementArray ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [ 1] => -7 [code] => -7 [2] => 一个无效的 PHP 类型被指定为输出参数。DateTime 对象、NULL 值和流不能被指定为输出参数。[message] => An无效的 PHP 类型被指定为输出参数。不能将 DateTime 对象、NULL 值和流指定为输出参数。))

我的代码:

$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 时,它只是打印出变量中声明的值,而不是输出参数。输入参数工作正常,因为我可以在数据库中看到它们。希望有人可以帮助解决这个问题。

谢谢

道格拉斯

【问题讨论】:

    标签: php sql-server-2008


    【解决方案1】:

    我不是 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多