Я борюсь с выходным параметром в PHP и SQL Server 2008. Я продолжаю получать ошибку:
Примечание: Неопределенная переменная: UserID в C: \ inetpub \ wwwroot \ PersonalWebsitePHP \ Register.php в строке 67 Ошибка при выполнении statementArray ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] = > -7 [code] => -7 [2] => В качестве выходного параметра был указан недопустимый тип PHP. Объекты DateTime, значения NULL и потоки не могут быть указаны в качестве выходных параметров. [Message] => Недопустимый тип PHP был указан как выходной параметр. Объекты DateTime, значения NULL и потоки не могут быть указаны в качестве выходных параметров.))
- Как подключиться к базе данных SQL Server в CodeIgniter?
- Я получаю ошибки «String data, right truncation» из PHP с использованием ODBC и подключение к экземпляру Microsoft SQL Server 2008R2
- Кодирование SQL_Latin1_General_CP1_CI_AS в UTF-8
- как сделать содержимое таблицы wil автоматически отображаемым в всплывающей форме
- PHP 5.3 не распознает собственный клиент для подключения к MS SQL
Мой код:
$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("Ymd 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 перед массивом, он просто печатает значение, объявленное в переменной, а не выходной параметр. Входные параметры работают отлично, так как я вижу их в базе данных. Надеюсь, кто-то может помочь с этим.
спасибо
Дуглас
Я не уверен на 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("Ymd 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("Ymd 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) );
Ссылка: здесь