Я создал хранимую процедуру Microsoft SQL, и я вызываю ее из кода PHP ниже. Я не получаю никаких ошибок, но я также не получаю никакого вывода. Я просмотрел все, но я все еще не совсем уверен, как сделать оператор WHILE для получения переменных, которые мне нужны из sql … Я надеюсь, что кто-то может взглянуть на код php ниже (и код sql ниже) чтобы увидеть, чего мне не хватает. Да, и когда я выполняю хранимую процедуру через SQL, она работает нормально и возвращает ожидаемые данные. Спасибо!
<?php
$serverName = "PRATHIBA-PC\SQL2008";
$connectionInfo = array( "Database"=>"TMS", "UID"=>"sa", "PWD"=>"asset12345" );
//$connectionInfo = array( "Database"=>"TMS");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}/* Define the Transact-SQL query. Use question marks (?) in
place of the parameters to be passed to the stored procedure
*/
$tsql_callSP = "{call Getstudentname( 1 )}";
$studentid = '1';$params = array(
array($studentid, SQLSRV_PARAM_IN)
);
/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);
if( $stmt3 === false ) {
echo "Error in executing statement 3.\n";
die( print_r( sqlsrv_errors(), true)); }
/* Display the value of the output parameters. */
while (sqlsrv_fetch_object($stmt3)) {
// SET PARAMETERS - SET TERMS
//echo $term;
}
/*Free the statement and connection resources. */while ($obj=sqlsrv_fetch_object($stmt3)) {
// SET PARAMETERS - SET TERMS
echo $obj->term;}
sqlsrv_free_stmt( $stmt3);
?>
Это код хранимой процедуры SQL Server
USE [TMS]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[Getstudentname]
SELECT 'Return Value' = @return_value
GO
Когда я запускаю этот код, я получаю вывод:
exec Getstudentname 1;
это мой вывод на сервере sql
1 Вивек Джохари [email protected]
Пожалуйста, помогите мне, ребята ..
Вы можете попробовать использовать вопросительный знак в качестве заполнителя для параметра, например так:
$tsql_callSP = "{call Getstudentname(?)}";
Не уверены, поможет ли это?
Других решений пока нет …