Bagikan melalui


sqlsrv_next_result

Unduh driver PHP

Membuat hasil berikutnya (tataan hasil, jumlah baris, atau parameter output) dari pernyataan yang ditentukan aktif.

Catatan

Hasil pertama (atau hanya) yang dikembalikan oleh kueri batch atau prosedur tersimpan aktif tanpa panggilan ke sqlsrv_next_result.

Sintaks

  
sqlsrv_next_result( resource $stmt )  

Parameter

$stmt: Pernyataan yang dijalankan di mana hasil berikutnya dibuat aktif.

Tampilkan Nilai

Jika hasil berikutnya berhasil dibuat aktif, nilai Boolean benar dikembalikan. Jika terjadi kesalahan dalam membuat hasil berikutnya aktif, false dikembalikan. Jika tidak ada lagi hasil yang tersedia, null dikembalikan.

Contoh 1

Contoh berikut membuat dan menjalankan prosedur tersimpan yang menyisipkan tinjauan produk ke dalam tabel Production.ProductReview , lalu memilih semua ulasan untuk produk yang ditentukan. Setelah eksekusi prosedur tersimpan, hasil pertama (jumlah baris yang terpengaruh oleh kueri INSERT dalam prosedur tersimpan) digunakan tanpa memanggil sqlsrv_next_result. Hasil berikutnya (baris yang dikembalikan oleh kueri SELECT dalam prosedur tersimpan) disediakan dengan memanggil sqlsrv_next_result dan digunakan menggunakan sqlsrv_fetch_array.

Catatan

Memanggil prosedur tersimpan menggunakan sintaksis kanonis adalah praktik yang direkomendasikan. Untuk informasi selengkapnya tentang sintaksis kanonis, lihat Memanggil Prosedur Tersimpan.

Contoh mengasumsikan bahwa SQL Server dan database AdventureWorks diinstal di komputer lokal. Semua output ditulis ke konsol saat contoh dijalankan dari baris perintah.

<?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 affectd: ".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 );  
?>  

Saat menjalankan prosedur tersimpan yang memiliki parameter output, disarankan agar semua hasil lain digunakan sebelum mengakses nilai parameter output. Untuk informasi selengkapnya, lihat Cara: Menentukan Arah Parameter Menggunakan Driver SQLSRV.

Contoh 2

Contoh berikut menjalankan kueri batch yang mengambil informasi ulasan produk untuk ID produk tertentu, menyisipkan tinjauan untuk produk, lalu kembali mengambil informasi ulasan produk untuk ID produk yang ditentukan. Tinjauan produk yang baru disisipkan akan disertakan dalam kumpulan hasil akhir kueri batch. Contoh menggunakan sqlsrv_next_result untuk berpindah dari satu hasil kueri batch ke kueri berikutnya.

Catatan

Hasil pertama (atau hanya) yang dikembalikan oleh kueri batch atau prosedur tersimpan aktif tanpa panggilan ke sqlsrv_next_result.

Contohnya menggunakan tabel Purchasing.ProductReview dari database AdventureWorks , dan mengasumsikan bahwa database ini diinstal di server. Semua output ditulis ke konsol saat contoh dijalankan dari baris perintah.

<?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 );  
?>  

Lihat Juga

Referensi API Driver SQLSRV

Tentang Contoh Kode dalam Dokumentasi

Mengambil Data

Memperbarui Data (Driver Microsoft untuk PHP untuk SQL Server)

Contoh Aplikasi (Driver SQLSRV)