As of today, this function is defined in FreeTDS (at least in the CVS version) and works perfectly with stored procedures.
Useful to avoid outer joins.
(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)
mssql_next_result — Déplace le pointeur interne MS SQL Server au résultat suivant
Cette fonction a été SUPPRIMÉE à partir de PHP 7.0.0.
Les alternatives à cette fonction incluent :
$result_id
) : boolLorsque vous envoyez plus d'une commande SQL au serveur, ou que vous exécutez une procédure stockée avec de multiples résultats, cela va conduire le serveur à retourner plusieurs jeux de lignes. mssql_next_result() va vérifier l'existence de plusieurs résultats disponibles sur le serveur. Si un autre jeu de résultat existe, mssql_next_result() va détruire de résultat précédent et préparer la lecture dans les nouvelles lignes.
result_id
Une ressource de résultats à évaluer. Ce résultat provient d'un appel à la fonction mssql_query().
Retourne TRUE
si un jeu de résultats additionnel est disponible, ou FALSE
sinon.
Exemple #1 Exemple avec mssql_next_result()
<?php
// Connexion à MSSQL et sélection de la base de données
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);
// Envoie d'une requête à MSSQL
$sql = 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query = mssql_query($sql, $link);
// Itération dans les lignes lues
do {
while ($row = mssql_fetch_row($query))
{
// Gestion des lignes
}
} while (mssql_next_result($query));
// Nettoyage
mssql_free_result($query);
mssql_close($link);
?>
As of today, this function is defined in FreeTDS (at least in the CVS version) and works perfectly with stored procedures.
Useful to avoid outer joins.
you cant return multiple values from store proc but you can return multiple resultset, so you can use mssql_next_result()
eg..
$stmt = mssql_init("AuthLoginUser", $objDBH);
mssql_bind($stmt,"@LoginUser",$LoginUser,SQLVARCHAR);
mssql_bind($stmt,"@Password",$strNewPassword,SQLVARCHAR);
mssql_bind($stmt,"@SessionId",$SessionId,SQLVARCHAR);
//mssql_bind($stmt,"@ReturnVal",$ReturnVal,SQLVARCHAR,True);
$rs=mssql_execute($stmt);
do {
while ($row = mssql_fetch_row($rs)) {
echo "$row[0] -- $row[1]<BR>";
}
} while (mssql_next_result($rs));
mssql_free_result($rs);
This function does not exist as a Sybase (Sybase-CT) alias, so if you have PHP+FreeTDS||Sybase as a MSSQL client on Unix platform, it will not work.
It seems that mssql_next_result does not work with result sets returned by stored procedures.
When retrieving multiple resultsets from a stored procedure, don't call mssql_free_statement on the statement resource, as any resultsets not yet retrieved will be lost, and mssql_next_result will report no more result sets were available.