Bagikan melalui


Cara: Menentukan Jenis Data SQL Server Saat Menggunakan Driver SQLSRV

Unduh driver PHP

Topik ini menunjukkan cara menggunakan driver SQLSRV untuk menentukan jenis data SQL Server untuk data yang dikirim ke server. Topik ini tidak berlaku saat menggunakan driver PDO_SQLSRV.

Untuk menentukan jenis data SQL Server, Anda harus menggunakan array $params opsional saat menyiapkan atau menjalankan kueri yang menyisipkan atau memperbarui data. Untuk detail tentang struktur dan sintaks array $params , lihat sqlsrv_query atau sqlsrv_prepare.

Langkah-langkah berikut ini meringkas cara menentukan jenis data SQL Server saat mengirim data ke server:

Catatan

Jika tidak ada jenis data SQL Server yang ditentukan, jenis default akan digunakan. Untuk informasi tentang jenis data SQL Server default, lihat Jenis Data SQL Server Default.

  1. Tentukan kueri Transact-SQL yang menyisipkan atau memperbarui data. Gunakan tanda tanya (?) sebagai tempat penampung untuk nilai parameter dalam kueri.

  2. Menginisialisasi atau memperbarui variabel PHP yang sesuai dengan tempat penampung dalam kueri Transact-SQL.

  3. Buat array $params yang akan digunakan saat menyiapkan atau menjalankan kueri. Perhatikan bahwa setiap elemen array $params juga harus menjadi array saat Anda menentukan jenis data SQL Server.

  4. Tentukan jenis data SQL Server yang diinginkan dengan menggunakan konstanta SQLSRV_SQLTYPE_* yang sesuai sebagai parameter keempat di setiap subarray array $params. Untuk daftar lengkap konstanta SQLSRV_SQLTYPE_*, lihat bagian SQLTYPEs konstanta (Driver Microsoft untuk PHP untuk SQL Server). Misalnya, dalam kode di bawah ini, $changeDate, $rate, dan $payFrequency masing-masing ditentukan sebagai jenis SQL Server datetime, uang, dan tinyint dalam array $params. Karena tidak ada jenis SQL Server yang ditentukan untuk $employeeId dan diinisialisasi ke bilangan bulat, bilangan bulat jenis SQL Server default digunakan.

    $employeeId = 5;  
    $changeDate = "2005-06-07";  
    $rate = 30;  
    $payFrequency = 2;  
    $params = array(  
                array($employeeId, null),  
                array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),  
                array($rate, null, null, SQLSRV_SQLTYPE_MONEY),  
                array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)  
              );  
    

Contoh

Contoh berikut menyisipkan data ke dalam tabel HumanResources.EmployeePayHistory dari database AdventureWorks. Jenis SQL Server ditentukan untuk parameter $changeDate, $rate, dan $payFrequency. Jenis SQL Server default digunakan untuk parameter $employeeId. Untuk memverifikasi bahwa data berhasil disisipkan, data yang sama diambil dan ditampilkan.

Contoh ini 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));  
}  
  
/* Define the query. */  
$tsql1 = "INSERT INTO HumanResources.EmployeePayHistory (EmployeeID,  
                                                        RateChangeDate,  
                                                        Rate,  
                                                        PayFrequency)  
           VALUES (?, ?, ?, ?)";  
  
/* Construct the parameter array. */  
$employeeId = 5;  
$changeDate = "2005-06-07";  
$rate = 30;  
$payFrequency = 2;  
$params1 = array(  
               array($employeeId, null),  
               array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),  
               array($rate, null, null, SQLSRV_SQLTYPE_MONEY),  
               array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)  
           );  
  
/* Execute the INSERT query. */  
$stmt1 = sqlsrv_query($conn, $tsql1, $params1);  
if( $stmt1 === false )  
{  
     echo "Error in execution of INSERT.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve the newly inserted data. */  
/* Define the query. */  
$tsql2 = "SELECT EmployeeID, RateChangeDate, Rate, PayFrequency  
          FROM HumanResources.EmployeePayHistory  
          WHERE EmployeeID = ? AND RateChangeDate = ?";  
  
/* Construct the parameter array. */  
$params2 = array($employeeId, $changeDate);  
  
/*Execute the SELECT query. */  
$stmt2 = sqlsrv_query($conn, $tsql2, $params2);  
if( $stmt2 === false )  
{  
     echo "Error in execution of SELECT.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve and display the results. */  
$row = sqlsrv_fetch_array( $stmt2 );  
if( $row === false )  
{  
     echo "Error in fetching data.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
echo "EmployeeID: ".$row['EmployeeID']."\n";  
echo "Change Date: ".date_format($row['RateChangeDate'], "Y-m-d")."\n";  
echo "Rate: ".$row['Rate']."\n";  
echo "PayFrequency: ".$row['PayFrequency']."\n";  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt1);  
sqlsrv_free_stmt($stmt2);  
sqlsrv_close($conn);  
?>  

Lihat juga

Mengambil Data

Tentang Contoh Kode dalam Dokumentasi

Cara: Menentukan Jenis Data PHP

Mengonversi jenis data

Cara: Mengirim dan Mengambil Data UTF-8 Menggunakan Dukungan Built-In UTF-8