Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez az 5.6.0-s verzióban hozzáadott funkció csak akkor érvényes, ha az SQL Serverhez készült Microsoft Drivers for PHP PDO_SQLSRV illesztőprogramját használja.
Dátum- és időtípusok lekérése DateTime-objektumokként
A PDO_SQLSRV használatakor a rendszer alapértelmezés szerint sztringként adja vissza a dátum- és időtípusokat (smalldatetime, datetime, date, time, datetime2 és datetimeoffset). Sem a PDO::ATTR_STRINGIFY_FETCHES, sem a PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE attribútumoknak nincs hatása. Ha PHP DateTime-objektumként szeretné lekérni a dátum- és időtípusokat, állítsa a kapcsolat vagy az utasítás attribútumát PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPEigazra (alapértelmezés szerint hamis ).
Megjegyzés:
Ez a kapcsolat- vagy utasításattribútum csak a dátum- és időtípusok rendszeres beolvasására vonatkozik, mivel a DateTime-objektumok nem adhatók meg kimeneti paraméterekként.
Példa – a kapcsolatattribútum használata
Az alábbi példák kihagyják a hibaellenőrzést az egyértelműség érdekében. Ez bemutatja, hogyan állíthatja be a kapcsolatattribútumot:
<?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élda – az utasítás attribútum használata
Ez a példa bemutatja, hogyan állíthatja be az utasításattribútumot:
<?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élda – az utasítás lehetőség használata
Másik lehetőségként az utasításattribútum is beállítható:
<?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élda – dátum/idő típusok lekérése sztringekként
Az alábbi példa bemutatja, hogyan érheti el az ellenkezőjét (ami nem igazán szükséges, mert alapértelmezés szerint hamis):
<?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);
?>
Lásd még:
Dátum- és időtípusok lekérése sztringként az SQLSRV-illesztőprogram használatával