Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PHP sürücüsünü indirme
Belirtilen deyimin sonraki sonucunu (sonuç kümesi, satır sayısı veya çıkış parametresi) etkin hale getirir.
Uyarı
Toplu sorgu veya saklı yordam tarafından döndürülen ilk (veya yalnızca) sonuç , sqlsrv_next_result çağrısı yapılmadan etkindir.
Sözdizimi
sqlsrv_next_result( resource $stmt )
Parametreler
$stmt: Sonraki sonucun etkin hale getirildiği yürütülen deyim.
Dönüş Değeri
Sonraki sonuç başarıyla etkin hale getirildiyse true Boole değeri döndürülür. Sonraki sonuç etkin hale getirilirken bir hata oluştuysa false döndürülür. Başka sonuç yoksa null döndürülür.
Örnek 1
Aşağıdaki örnek , Production.ProductReview tablosuna bir ürün gözden geçirmesi ekleyen bir saklı yordam oluşturup yürütür ve ardından belirtilen ürün için tüm incelemeleri seçer. Saklı yordam yürütüldikten sonra, ilk sonuç (saklı yordamdaki INSERT sorgusundan etkilenen satır sayısı) sqlsrv_next_result çağrılmadan tüketilir. Sonraki sonuç (saklı yordamda SELECT sorgusu tarafından döndürülen satırlar) sqlsrv_next_result çağrılarak kullanılabilir hale getirilir ve sqlsrv_fetch_array kullanılarak kullanılır.
Uyarı
Kurallı söz dizimini kullanarak saklı yordamları çağırmak önerilen uygulamadır. Kurallı söz dizimi hakkında daha fazla bilgi için bkz. Saklı Yordam Çağırma.
Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Drop the stored procedure if it already exists. */
$tsql_dropSP = "IF OBJECT_ID('InsertProductReview', 'P') IS NOT NULL
DROP PROCEDURE InsertProductReview";
$stmt1 = sqlsrv_query( $conn, $tsql_dropSP);
if( $stmt1 === false )
{
echo "Error in executing statement 1.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Create the stored procedure. */
$tsql_createSP = " CREATE PROCEDURE InsertProductReview
@ProductID int,
@ReviewerName nvarchar(50),
@ReviewDate datetime,
@EmailAddress nvarchar(50),
@Rating int,
@Comments nvarchar(3850)
AS
BEGIN
INSERT INTO Production.ProductReview
(ProductID,
ReviewerName,
ReviewDate,
EmailAddress,
Rating,
Comments)
VALUES
(@ProductID,
@ReviewerName,
@ReviewDate,
@EmailAddress,
@Rating,
@Comments);
SELECT * FROM Production.ProductReview
WHERE ProductID = @ProductID;
END";
$stmt2 = sqlsrv_query( $conn, $tsql_createSP);
if( $stmt2 === false)
{
echo "Error in executing statement 2.\n";
die( print_r( sqlsrv_errors(), true));
}
/*-------- The next few steps call the stored procedure. --------*/
/* Define the Transact-SQL query. Use question marks (?) in place of the
parameters to be passed to the stored procedure */
$tsql_callSP = "{call InsertProductReview(?, ?, ?, ?, ?, ?)}";
/* Define the parameter array. */
$productID = 709;
$reviewerName = "Customer Name";
$reviewDate = "2008-02-12";
$emailAddress = "customer@email.com";
$rating = 3;
$comments = "[Insert comments here.]";
$params = array(
$productID,
$reviewerName,
$reviewDate,
$emailAddress,
$rating,
$comments
);
/* 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));
}
/* Consume the first result (rows affected by INSERT query in the
stored procedure) without calling sqlsrv_next_result. */
echo "Rows affected: ".sqlsrv_rows_affected($stmt3)."-----\n";
/* Move to the next result and display results. */
$next_result = sqlsrv_next_result($stmt3);
if( $next_result )
{
echo "\nReview information for product ID ".$productID.".---\n";
while( $row = sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC))
{
echo "ReviewerName: ".$row['ReviewerName']."\n";
echo "ReviewDate: ".date_format($row['ReviewDate'],
"M j, Y")."\n";
echo "EmailAddress: ".$row['EmailAddress']."\n";
echo "Rating: ".$row['Rating']."\n\n";
}
}
elseif( is_null($next_result))
{
echo "No more results.\n";
}
else
{
echo "Error in moving to next result.\n";
die(print_r(sqlsrv_errors(), true));
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt1 );
sqlsrv_free_stmt( $stmt2 );
sqlsrv_free_stmt( $stmt3 );
sqlsrv_close( $conn );
?>
Çıkış parametrelerine sahip bir saklı yordam yürütürken, çıkış parametrelerinin değerlerine erişmeden önce diğer tüm sonuçların kullanılması önerilir. Daha fazla bilgi için bkz . Nasıl yapılır: SQLSRV Sürücüsünü Kullanarak Parametre Yönünü Belirtme.
Örnek 2
Aşağıdaki örnek, belirtilen bir ürün kimliği için ürün gözden geçirme bilgilerini alan, ürün için bir gözden geçirme ekleyen ve ardından belirtilen ürün kimliği için ürün gözden geçirme bilgilerini yeniden alan bir toplu iş sorgusu yürütür. Yeni eklenen ürün gözden geçirmesi, toplu iş sorgusunun son sonuç kümesine eklenir. Örnek, toplu iş sorgusunun bir sonucundan diğerine geçmek için sqlsrv_next_result kullanır.
Uyarı
Toplu sorgu veya saklı yordam tarafından döndürülen ilk (veya yalnızca) sonuç , sqlsrv_next_result çağrısı yapılmadan etkindir.
Örnekte AdventureWorks veritabanının Purchaseing.ProductReview tablosu kullanılır ve bu veritabanının sunucuda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Define the batch query. */
$tsql = "--Query 1
SELECT ProductID, ReviewerName, Rating
FROM Production.ProductReview
WHERE ProductID=?;
--Query 2
INSERT INTO Production.ProductReview (ProductID,
ReviewerName,
ReviewDate,
EmailAddress,
Rating)
VALUES (?, ?, ?, ?, ?);
--Query 3
SELECT ProductID, ReviewerName, Rating
FROM Production.ProductReview
WHERE ProductID=?;";
/* Assign parameter values and execute the query. */
$params = array(798,
798,
'CustomerName',
'2008-4-15',
'test@customer.com',
3,
798 );
$stmt = sqlsrv_query($conn, $tsql, $params);
if( $stmt === false )
{
echo "Error in statement execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Retrieve and display the first result. */
echo "Query 1 result:\n";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC ))
{
print_r($row);
}
/* Move to the next result of the batch query. */
sqlsrv_next_result($stmt);
/* Display the result of the second query. */
echo "Query 2 result:\n";
echo "Rows Affected: ".sqlsrv_rows_affected($stmt)."\n";
/* Move to the next result of the batch query. */
sqlsrv_next_result($stmt);
/* Retrieve and display the third result. */
echo "Query 3 result:\n";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC ))
{
print_r($row);
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt );
sqlsrv_close( $conn );
?>
Ayrıca Bkz.
SQLSRV Sürücüsü API Başvurusu
Belgede Kod Örnekleri Hakkında
Verileri Güncelleştirme (SQL Server için PHP için Microsoft Sürücüleri)