PDOStatement::getColumnMeta

Stáhnout ovladač PHP

Získává metadata pro sloupec.

Syntax

  
array PDOStatement::getColumnMeta ( $column );  

Parameters

$conn: (Celočíselné) Nulové číslo sloupce, jehož metadata chcete získat.

Návratová hodnota

Asociativní pole (klíč a hodnota) obsahující metadata pro daný sloupec. Viz sekce Poznámky pro popis polí v poli.

Remarks

Následující tabulka popisuje pole v poli vrácená pomocí getColumnMeta.

JMÉNO VALUES
native_type Specifikuje typ PHP pro sloupec. Vždy provázek.
řidič:decl_type Specifikuje typ SQL používaný k reprezentaci hodnoty sloupce v databázi. Pokud je sloupec ve výsledné množině výsledkem funkce, tato hodnota není vrácena pomocí PDOStatement::getColumnMeta.
flags Specifikuje příznaky nastavené pro tento sloupec. Vždy 0.
name Specifikuje název sloupce v databázi.
tabulka Specifikuje název tabulky, která obsahuje sloupec v databázi. Vždy prázdné.
Len Specifikuje délku sloupce.
přesnost Specifikuje číselnou přesnost tohoto sloupce.
pdo_type Specifikuje typ tohoto sloupce reprezentovaný konstantami PDO::P ARAM_*. Vždy PDO::P ARAM_STR (2).

Podpora PDO byla přidána ve verzi 2.0 Microsoft Drivers for PHP for SQL Server.

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'];  
?>  

Metadata klasifikace citlivých dat

Od verze 5.8.0 je k dispozici nový atribut PDO::SQLSRV_ATTR_DATA_CLASSIFICATION příkazu, který uživatelům umožňuje přístup k metadatům klasifikace citlivých dat v Microsoft SQL Server 2019 pomocí PDOStatement::getColumnMeta, což vyžaduje ovladač Microsoft ODBC 17.4.2 nebo vyšší.

Poznámka: atribut PDO::SQLSRV_ATTR_DATA_CLASSIFICATION je ve false výchozím nastavení, ale při nastavení na true, zmíněné pole flagspole , bude naplněno metadaty klasifikace citlivých dat, pokud existují.

Vezměme si například tabulku pacientů:

CREATE TABLE Patients 
      [PatientId] int identity,
      [SSN] char(11),
      [FirstName] nvarchar(50),
      [LastName] nvarchar(50),
      [BirthDate] date)

Můžeme klasifikovat sloupce SSN a Datum narození, jak je uvedeno níže:

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')

Pro přístup k metadatům použijte PDOStatement::getColumnMeta after nastavte PDO::SQLSRV_ATTR_DATA_CLASSIFICATION na true, jak je ukázáno v níže uvedeném úryvku:

$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;
}

Výstup metadat pro všechny sloupce je:

{"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}

Pokud výše uvedený úryvek upravíme nastavením PDO::SQLSRV_ATTR_DATA_CLASSIFICATION na ( false výchozí případ), flags pole bude vždy jako 0 dříve, takto:

{"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}

Hodnocení citlivosti pomocí předdefinované sady hodnot

Od verze 5.9.0 přidávaly PHP ovladače vyhledávání klasifikačních hodností při použití ODBC Driver 17.4.2 nebo vyššího. Uživatel může definovat pořadí při klasifikaci ADD SENSITIVITY CLASSIFICATION libovolného datového sloupce.

Například pokud uživatel přiřadí NONE a LOW k BirthDate a SSN, JSON reprezentace se zobrazí následovně:

{"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}

Jak je ukázáno v klasifikaci citlivosti, číselné hodnoty hodností jsou:

0 for NONE
10 for LOW
20 for MEDIUM
30 for HIGH
40 for CRITICAL

Pokud tedy místo , uživatel RANK=NONEpři klasifikaci sloupce Datum narození definuje RANK=CRITICAL místo , bude klasifikační metadata následující:

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)
  }
}

Aktualizovaná reprezentace JSON je uvedena níže:

{"0":{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""},"rank":40},"rank":40}

Viz také

PDOStatement – třída

PDO