PDOStatement::getColumnMeta

PHP sürücüsünü indirme

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}

Ayrıca Bkz.

PDOStatement Sınıfı

PDO