Bagikan melalui


sqlsrv_query

Unduh driver PHP

Menyiapkan dan menjalankan pernyataan.

Sintaks

  
sqlsrv_query(resource $conn, string $tsql [, array $params [, array $options]])  

Parameter

$conn: Sumber daya koneksi yang terkait dengan pernyataan yang disiapkan.

$tsql: Ekspresi Transact-SQL yang sesuai dengan pernyataan yang disiapkan.

$params [OPSIONAL]: Array nilai yang sesuai dengan parameter dalam kueri berparameter. Setiap elemen array dapat berupa salah satu dari berikut ini:

  • Nilai harfiah.

  • Variabel PHP.

  • Array dengan struktur berikut:

    array($value [, $direction [, $phpType [, $sqlType]]])  
    

    Deskripsi untuk setiap elemen array ada dalam tabel berikut:

    Elemen Deskripsi
    $value Nilai harfiah, variabel PHP, atau variabel referensi by-reference PHP.
    $direction[OPSIONAL] Salah satu konstanta SQLSRV_PARAM_* berikut yang digunakan untuk menunjukkan arah parameter: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. Nilai defaultnya adalah SQLSRV_PARAM_IN.

    Untuk informasi selengkapnya tentang konstanta PHP, lihat Konstanta (Driver Microsoft untuk PHP untuk SQL Server).
    $phpType[OPSIONAL] Konstanta SQLSRV_PHPTYPE_* yang menentukan jenis data PHP dari nilai yang dikembalikan.

    Untuk informasi selengkapnya tentang konstanta PHP, lihat Konstanta (Driver Microsoft untuk PHP untuk SQL Server).
    $sqlType[OPSIONAL] Konstanta SQLSRV_SQLTYPE_* yang menentukan jenis data SQL Server dari nilai input.

    Untuk informasi selengkapnya tentang konstanta PHP, lihat Konstanta (Driver Microsoft untuk PHP untuk SQL Server).

$options [OPSIONAL]: Array asosiatif yang mengatur properti kueri. Ini adalah daftar kunci yang sama yang juga didukung oleh sqlsrv_prepare.

Tampilkan Nilai

Sumber daya pernyataan. Jika pernyataan tidak dapat dibuat dan/atau dijalankan, false akan dikembalikan.

Keterangan

Fungsi sqlsrv_query sangat cocok untuk kueri satu kali dan harus menjadi pilihan default untuk menjalankan kueri kecuali keadaan khusus berlaku. Fungsi ini menyediakan metode yang disederhanakan untuk menjalankan kueri dengan jumlah kode minimum. Fungsi sqlsrv_query melakukan persiapan pernyataan dan eksekusi pernyataan, dan dapat digunakan untuk menjalankan kueri berparameter.

Untuk informasi selengkapnya, lihat Cara: Mengambil Parameter Output Menggunakan Driver SQLSRV.

Contoh 1

Dalam contoh berikut, satu baris disisipkan ke dalam tabel Sales.SalesOrderDetail database AdventureWorks. Contohnya mengasumsikan bahwa SQL Server dan database AdventureWorks diinstal di komputer lokal. Semua output ditulis ke konsol saat contoh dijalankan dari baris perintah.

Catatan

Meskipun contoh berikut menggunakan pernyataan INSERT untuk menunjukkan penggunaan sqlsrv_query untuk eksekusi pernyataan satu kali, konsep ini berlaku untuk pernyataan Transact-SQL apa pun.

<?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));  
}  
  
/* Set up the parameterized query. */  
$tsql = "INSERT INTO Sales.SalesOrderDetail   
        (SalesOrderID,   
         OrderQty,   
         ProductID,   
         SpecialOfferID,   
         UnitPrice,   
         UnitPriceDiscount)  
        VALUES   
        (?, ?, ?, ?, ?, ?)";  
  
/* Set parameter values. */  
$params = array(75123, 5, 741, 1, 818.70, 0.00);  
  
/* Prepare and execute the query. */  
$stmt = sqlsrv_query($conn, $tsql, $params);  
if ($stmt) {  
    echo "Row successfully inserted.\n";  
} else {  
    echo "Row insertion failed.\n";  
    die(print_r(sqlsrv_errors(), true));  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  
?>  

Contoh 2

Contoh berikut memperbarui bidang di tabel Sales.SalesOrderDetail dari database AdventureWorks. Contohnya 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));  
}  
  
/* Set up the parameterized query. */  
$tsql = "UPDATE Sales.SalesOrderDetail   
         SET OrderQty = (?)   
         WHERE SalesOrderDetailID = (?)";  
  
/* Assign literal parameter values. */  
$params = array(5, 10);  
  
/* Execute the query. */  
if (sqlsrv_query($conn, $tsql, $params)) {  
    echo "Statement executed.\n";  
} else {  
    echo "Error in statement execution.\n";  
    die(print_r(sqlsrv_errors(), true));  
}  
  
/* Free connection resources. */  
sqlsrv_close($conn);  
?>  

Catatan

Disarankan untuk menggunakan string sebagai input saat mengikat nilai ke kolom desimal atau numerik untuk memastikan presisi dan akurasi karena PHP memiliki presisi terbatas untuk angka titik float. Hal yang sama berlaku untuk kolom bigint, terutama ketika nilai berada di luar rentang bilangan bulat.

Contoh: 3

Sampel kode ini menunjukkan cara mengikat nilai desimal sebagai parameter input.

<?php
$serverName = "(local)";
$connectionInfo = array("Database"=>"YourTestDB");  
$conn = sqlsrv_connect($serverName, $connectionInfo);  
if ($conn === false) {  
     echo "Could not connect.\n";  
     die(print_r(sqlsrv_errors(), true));  
}  

// Assume TestTable exists with a decimal field 
$input = "9223372036854.80000";
$params = array($input);
$stmt = sqlsrv_query($conn, "INSERT INTO TestTable (DecimalCol) VALUES (?)", $params);

sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  

?>

Contoh 4

Sampel kode ini memperlihatkan cara membuat tabel jenis sql_variant dan mengambil data yang disisipkan.

<?php
$server = 'serverName';
$dbName = 'databaseName';
$uid = 'yourUserName';
$pwd = 'yourPassword';

$options = array("Database"=>$dbName, "UID"=>$uid, "PWD"=>$pwd);
$conn = sqlsrv_connect($server, $options);
if($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}

$tableName = 'testTable';
$query = "CREATE TABLE $tableName ([c1_int] sql_variant, [c2_varchar] sql_variant)";

$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);

$query = "INSERT INTO [$tableName] (c1_int, c2_varchar) VALUES (1, 'test_data')";
$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);

$query = "SELECT * FROM $tableName";
$stmt = sqlsrv_query($conn, $query);

if(sqlsrv_fetch($stmt) === false) {
    die(print_r(sqlsrv_errors(), true));
}

$col1 = sqlsrv_get_field($stmt, 0);
echo "First field:  $col1 \n";

$col2 = sqlsrv_get_field($stmt, 1);
echo "Second field:  $col2 \n";

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

?>

Output yang diharapkan adalah:

First field:  1
Second field:  test_data

Lihat juga

Referensi API Driver SQLSRV

Cara: Melakukan Kueri Berparameter

Tentang Contoh Kode dalam Dokumentasi

Cara: Mengirim Data sebagai Aliran

Menggunakan Parameter Arah