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.
Bir sütun için meta verileri alır.
Syntax
array PDOStatement::getColumnMeta ( $column );
Parameters
$conn: (Tam sayı) Meta verisi almak istediğiniz sütunun sıfır tabanlı sayısı.
Dönüş Değeri
Sütunun meta verilerini içeren bir ilişkisel dizi (anahtar ve değer). Dizide bulunan alanların açıklaması için Açıklamalar bölümüne bakınız.
Remarks
Aşağıdaki tablo, getColumnMeta tarafından döndürülen dizideki alanları tanımlar.
| İSİM | VALUES |
|---|---|
| native_type | Sütun için PHP tipini belirtir. Her zaman ip. |
| sürücü:decl_type | Veritabanında sütun değerini temsil etmek için kullanılan SQL tipini belirtir. Eğer sonuç kümesindeki sütun bir fonksiyonun sonucuysa, bu değer PDOStatement::getColumnMeta tarafından döndürülmez. |
| flags | Bu sütun için belirlenen bayrakları belirtir. Her zaman 0. |
| name | Veritabanındaki sütunun adını belirtir. |
| table | Veritabanındaki sütunu içeren tablonun adını belirtir. Her zaman boş. |
| len | Sütun uzunluğunu belirtir. |
| hassasiyet | Bu sütunun sayısal hassasiyetini belirtir. |
| pdo_type | Bu sütunun türünü PDO::P ARAM_* sabitleriyle temsil edildiği şekilde belirtir. Her zaman PDO::P ARAM_STR (2). |
PDO desteği, SQL Server için Microsoft Drivers for PHP sürümünün 2.0 sürümünde eklenmiştir.
Example
<?php
$database = "AdventureWorks";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
$stmt = $conn->query("select * from Person.ContactType");
$metadata = $stmt->getColumnMeta(2);
var_dump($metadata);
print $metadata['sqlsrv:decl_type'] . "\n";
print $metadata['native_type'] . "\n";
print $metadata['name'];
?>
Duyarlılık Veri Sınıflandırması Meta Verileri
5.8.0 sürümünden itibaren, kullanıcıların Microsoft SQL Server 2019'daki PDOStatement::getColumnMetahassasiyet veri sınıflandırma meta verilerine erişebilmeleri için yeni bir ifade özniteliği PDO::SQLSRV_ATTR_DATA_CLASSIFICATION sunulmaktadır; bu meta veriler Microsoft ODBC Driver 17.4.2 veya üzeri gerektirir.
Öznitelik PDO::SQLSRV_ATTR_DATA_CLASSIFICATION varsayılan olarak vardır false , ancak , olarak ayarlandığında true, yukarıda bahsedilen dizi alanı, flagsvarsa, duyarlılık veri sınıflandırma meta verisi ile doldurulur.
Örneğin bir Hastalar tablosunu ele alalım:
CREATE TABLE Patients
[PatientId] int identity,
[SSN] char(11),
[FirstName] nvarchar(50),
[LastName] nvarchar(50),
[BirthDate] date)
SSN ve BirthDate sütunlarını aşağıda gösterildiği gibi sınıflandırabiliriz:
ADD SENSITIVITY CLASSIFICATION TO [Patients].SSN WITH (LABEL = 'Highly Confidential - secure privacy', INFORMATION_TYPE = 'Credentials')
ADD SENSITIVITY CLASSIFICATION TO [Patients].BirthDate WITH (LABEL = 'Confidential Personal Data', INFORMATION_TYPE = 'Birthdays')
Meta verilere erişmek için, aşağıdaki bölümde gösterildiği gibi ayardan PDO::SQLSRV_ATTR_DATA_CLASSIFICATION sonra doğru olarak kullanabilirsinizPDOStatement::getColumnMeta:
$options = array(PDO::SQLSRV_ATTR_DATA_CLASSIFICATION => true);
$tableName = 'Patients';
$tsql = "SELECT * FROM $tableName";
$stmt = $conn->prepare($tsql, $options);
$stmt->execute();
$numCol = $stmt->columnCount();
for ($i = 0; $i < $numCol; $i++) {
$metadata = $stmt->getColumnMeta($i);
$jstr = json_encode($metadata);
echo $jstr . PHP_EOL;
}
Tüm sütunlar için meta verinin çıktısı şudur:
{"flags":{"Data Classification":[]},"sqlsrv:decl_type":"int identity","native_type":"string","table":"","pdo_type":2,"name":"PatientId","len":10,"precision":0}
{"flags":{"Data Classification":[{"Label":{"name":"Highly Confidential - secure privacy","id":""},"Information Type":{"name":"Credentials","id":""}}]},"sqlsrv:decl_type":"char","native_type":"string","table":"","pdo_type":2,"name":"SSN","len":11,"precision":0}
{"flags":{"Data Classification":[]},"sqlsrv:decl_type":"nvarchar","native_type":"string","table":"","pdo_type":2,"name":"FirstName","len":50,"precision":0}
{"flags":{"Data Classification":[]},"sqlsrv:decl_type":"nvarchar","native_type":"string","table":"","pdo_type":2,"name":"LastName","len":50,"precision":0}
{"flags":{"Data Classification":[{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""}}]},"sqlsrv:decl_type":"date","native_type":"string","table":"","pdo_type":2,"name":"BirthDate","len":10,"precision":0}
Yukarıdaki snippeti ( PDO::SQLSRV_ATTR_DATA_CLASSIFICATION varsayılan durum) olarak false ayarlarsak, alan flags her 0 zaman eskisi gibi olur, şöyle:
{"flags":0,"sqlsrv:decl_type":"int identity","native_type":"string","table":"","pdo_type":2,"name":"PatientId","len":10,"precision":0}
{"flags":0,"sqlsrv:decl_type":"char","native_type":"string","table":"","pdo_type":2,"name":"SSN","len":11,"precision":0}
{"flags":0,"sqlsrv:decl_type":"nvarchar","native_type":"string","table":"","pdo_type":2,"name":"FirstName","len":50,"precision":0}
{"flags":0,"sqlsrv:decl_type":"nvarchar","native_type":"string","table":"","pdo_type":2,"name":"LastName","len":50,"precision":0}
{"flags":0,"sqlsrv:decl_type":"date","native_type":"string","table":"","pdo_type":2,"name":"BirthDate","len":10,"precision":0}
Önceden tanımlanmış bir değer kümesi kullanılarak Duyarlılık Derecesi
5.9.0 sürümünden itibaren, PHP sürücüleri ODBC Driver 17.4.2 veya üzeri kullanıldığında sınıflandırma sıralaması alımı eklemiştir. Kullanıcı, herhangi bir veri sütununu sınıflandırırken rank ADD SENSITIVITY CLASSIFICATION tanımlayabilir.
Örneğin, kullanıcı NONE sırasıyla BirthDate ve SSN'ye ve LOW ataydığında, JSON temsili aşağıdaki şekilde gösterilir:
{"0":{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""},"rank":0},"rank":0}
{"0":{"Label":{"name":"Highly Confidential - secure privacy","id":""},"Information Type":{"name":"Credentials","id":""},"rank":10},"rank":10}
Duyarlılık sınıflandırmasında gösterildiği gibi, rütbelerin sayısal değerleri şunlardır:
0 for NONE
10 for LOW
20 for MEDIUM
30 for HIGH
40 for CRITICAL
Dolayısıyla, kullanıcı BirthDate sütununu sınıflandırırken yerine RANK=NONEtanımlarsa RANK=CRITICAL , sınıflandırma meta verisi şu olur:
array(1) {
["Data Classification"]=>
array(2) {
[0]=>
array(3) {
["Label"]=>
array(2) {
["name"]=>
string(26) "Confidential Personal Data"
["id"]=>
string(0) ""
}
["Information Type"]=>
array(2) {
["name"]=>
string(9) "Birthdays"
["id"]=>
string(0) ""
}
["rank"]=>
int(40)
}
["rank"]=>
int(40)
}
}
Güncellenmiş JSON temsili aşağıda gösterilmiştir:
{"0":{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""},"rank":40},"rank":40}