Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato funkce přidaná ve verzi 5.6.0 je platná pouze při použití ovladače PDO_SQLSRV pro Ovladače Microsoftu pro PHP pro SQL Server.
Načtení typů data a času jako objektů DateTime
Při použití PDO_SQLSRV se typy data a času (smalldatetime, datetime, date, time, datetime2 a datetimeoffset) ve výchozím nastavení vrací jako řetězce. Ani atribut PDO::ATTR_STRINGIFY_FETCHES, ani atribut PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE nemají žádný vliv. Pokud chcete načíst typy data a času jako objekty PHP DateTime , nastavte atribut připojení nebo příkazu PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE na true (ve výchozím nastavení je false ).
Poznámka:
Tento atribut připojení nebo příkazu se vztahuje pouze na běžné načítání typů data a času, protože objekty DateTime nelze zadat jako výstupní parametry.
Příklad – použití atributu připojení
Následující příklady vynechávají kontrolu chyb kvůli přehlednosti. To ukazuje, jak nastavit atribut připojení:
<?php
$server = 'myserver';
$databaseName = 'mydatabase';
$username = 'myusername';
$passwd = '<password>';
$tableName = 'mytable';
$conn = new PDO("sqlsrv:Server = $server; Database = $databaseName", $username, $passwd);
// To set the connection attribute
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = $conn->prepare($query);
$stmt->execute();
// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
unset($stmt);
unset($conn);
?>
Příklad – použití atributu deklarace
Tento příklad ukazuje, jak nastavit atribut příkazu:
<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");
$query = "SELECT DateTimeCol FROM myTable";
$stmt = $conn->prepare($query);
$stmt->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$stmt->execute();
// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_NUM);
var_dump($row);
unset($stmt);
unset($conn);
?>
Příklad – použití možnosti příkazu
Alternativně lze atribut příkazu nastavit jako možnost:
<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");
$dateObj = null;
$query = "SELECT DateTimeCol FROM aTable";
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => true);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateObj, PDO::PARAM_LOB);
$row = $stmt->fetch(PDO::FETCH_BOUND);
var_dump($dateObj);
unset($stmt);
unset($conn);
?>
Příklad – načtení typů datetime jako řetězců
Následující příklad ukazuje, jak dosáhnout opaku (což ve skutečnosti není nutné, protože je ve výchozím nastavení false):
<?php
$database = "MyData";
$conn = new PDO("sqlsrv:server = (local); Database = $database");
$dateStr = null;
$query = 'SELECT DateTimeCol FROM table1';
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => false);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateStr);
$row = $stmt->fetch(PDO::FETCH_BOUND);
echo $dateStr . PHP_EOL;
unset($stmt);
unset($conn);
?>
Viz také
Načtení datových a časových typů jako řetězců pomocí ovladače SQLSRV