Cara: Menentukan Jenis Data PHP
Saat menggunakan driver PDO_SQLSRV, Anda dapat menentukan jenis data PHP saat mengambil data dari server dengan PDOStatement::bindColumn dan PDOStatement::bindParam. Lihat PDOStatement::bindColumn dan PDOStatement::bindParam untuk informasi selengkapnya.
Langkah-langkah berikut ini meringkas cara menentukan jenis data PHP saat mengambil data dari server menggunakan driver SQLSRV:
Siapkan dan jalankan kueri Transact-SQL dengan sqlsrv_query atau kombinasi sqlsrv_prepare/sqlsrv_execute.
Buat baris data tersedia untuk dibaca dengan sqlsrv_fetch.
Ambil data bidang dari baris yang dikembalikan menggunakan sqlsrv_get_field dengan jenis data PHP yang diinginkan yang ditentukan sebagai parameter ketiga opsional. Jika parameter ketiga opsional tidak ditentukan, data dikembalikan sesuai dengan jenis PHP default. Untuk informasi tentang jenis pengembalian PHP default, lihat Jenis Data PHP Default.
Untuk informasi tentang konstanta yang digunakan untuk menentukan jenis data PHP, lihat bagian PHPTYPEs konstanta (Driver Microsoft untuk PHP untuk SQL Server).
Contoh
Contoh berikut mengambil baris dari tabel Production.ProductReview dari database AdventureWorks. Di setiap baris yang dikembalikan, bidang ReviewDate diambil sebagai string dan bidang Komentar diambil sebagai aliran. Data aliran ditampilkan dengan menggunakan fungsi fpassthru PHP.
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 Transact-SQL query. */
$tsql = "SELECT ReviewerName,
ReviewDate,
Rating,
Comments
FROM Production.ProductReview
WHERE ProductID = ?
ORDER BY ReviewDate DESC";
/* Set the parameter value. */
$productID = 709;
$params = array( $productID);
/* Execute the query. */
$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 data. The first and third fields are
retrieved according to their default types, strings. The second field
is retrieved as a string with 8-bit character encoding. The fourth
field is retrieved as a stream with 8-bit character encoding.*/
while ( sqlsrv_fetch( $stmt))
{
echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
echo "Date: ".sqlsrv_get_field( $stmt, 1,
SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."\n";
echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."\n";
echo "Comments: ";
$comments = sqlsrv_get_field( $stmt, 3,
SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
fpassthru( $comments);
echo "\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Dalam contoh, mengambil bidang kedua (ReviewDate) sebagai string mempertahankan akurasi milidetik dari jenis data SQL Server DATETIME. Secara default, jenis data SQL Server DATETIME diambil sebagai objek DateTime PHP di mana akurasi milidetik hilang.
Mengambil bidang keempat (Komentar) sebagai aliran adalah untuk tujuan demonstrasi. Secara default, jenis data SQL Server nvarchar(3850) diambil sebagai string, yang dapat diterima untuk sebagian besar situasi.
Catatan
Fungsi sqlsrv_field_metadata menyediakan cara untuk mendapatkan informasi bidang, termasuk informasi jenis, sebelum menjalankan kueri.
Lihat juga
Tentang Contoh Kode dalam Dokumentasi
Cara: Mengambil Parameter Keluaran Menggunakan Driver SQLSRV
Cara: Mengambil Parameter Masukan dan Keluaran Menggunakan Driver SQLSRV
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk