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.
Aby se zachovala přesnost, desetinné nebo číselné typy se vždy načítají jako řetězce s přesnými přesnostmi a měřítky. Pokud je jakákoli hodnota menší než 1, chybí úvodní nula. Je to stejné s poli typu peníze a malými penězi, protože jsou to desetinná místa s pevnou škálou rovnající se 4.
Přidejte počáteční nuly, pokud chybí
Počínaje verzí 5.6.0 umožňuje atribut připojení nebo příkazu PDO::SQLSRV_ATTR_FORMAT_DECIMALS uživateli formátovat desetinné řetězce. Tento atribut očekává logickou hodnotu (true nebo false) a má vliv pouze na formátování desetinných nebo číselných hodnot v načtených výsledcích. Jinými slovy, tento atribut nemá žádný vliv na jiné operace, jako je vložení nebo aktualizace.
Ve výchozím nastavení PDO::SQLSRV_ATTR_FORMAT_DECIMALS je false. Pokud je nastavena hodnota na pravda, budou přidány počáteční nuly k desetinným řetězcům pro jakoukoliv desetinnou hodnotu menší než 1.
Konfigurace počtu desetinných míst
Když PDO::SQLSRV_ATTR_FORMAT_DECIMALS je zapnuté, další připojení nebo atribut příkazu, PDO::SQLSRV_ATTR_DECIMAL_PLACESumožňuje uživatelům konfigurovat počet desetinných míst při zobrazení peněz a malých dat. Přijímá celočíselné hodnoty v rozsahu [0, 4] a zaokrouhlování může nastat, když se zobrazí. Nicméně, základní data týkající se peněz zůstávají nezměněna.
Atributy příkazu vždy přepíší odpovídající nastavení připojení. Všimněte si, že tato PDO::SQLSRV_ATTR_DECIMAL_PLACES možnost má vliv jenom na data peněz a PDO::SQLSRV_ATTR_FORMAT_DECIMALS musí být nastavená na hodnotu true. Jinak je formátování vypnuté nezávisle na nastavení PDO::SQLSRV_ATTR_DECIMAL_PLACES.
Poznámka:
Vzhledem k tomu, že pole money nebo smallmoney mají měřítko 4, bude nastavení PDO::SQLSRV_ATTR_DECIMAL_PLACES na libovolné záporné číslo nebo jakákoli hodnota větší než 4 ignorována. Nedoporučuje se používat žádná formátovaná data peněz jako vstupy do jakéhokoli výpočtu.
Nastavení atributů připojení
Nastavte atributy v okamžiku připojení:
$attrs = array(PDO::SQLSRV_ATTR_FORMAT_DECIMALS => true, PDO::SQLSRV_ATTR_DECIMAL_PLACES => 2); $conn = new PDO("sqlsrv:Server = myServer; Database = myDB", $username, $password, $attrs);Nastavení atributů po připojení:
$conn = new PDO("sqlsrv:Server = myServer; Database = myDB", $username, $password); $conn->setAttribute(PDO::SQLSRV_ATTR_FORMAT_DECIMALS, true); $conn->setAttribute(PDO::SQLSRV_ATTR_DECIMAL_PLACES, 2);
Příklad – formátování dat peněz
Následující příklad ukazuje, jak načíst finanční data pomocí PDOStatement::bindColumn:
<?php
$database = "myDB";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server; Database = $database", "", "");
$conn->setAttribute(PDO::SQLSRV_ATTR_FORMAT_DECIMALS, true);
$numDigits = 3;
$query = "SELECT smallmoney1 FROM aTable";
$options = array(PDO::SQLSRV_ATTR_DECIMAL_PLACES => $numDigits);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn('smallmoney1', $field);
$result = $stmt->fetch(PDO::FETCH_BOUND);
echo $field; // expect a number string with 3 decimal places
unset($stmt);
unset($conn);
?>
Příklad – přepsání parametrů připojení
Následující příklad ukazuje, jak přepsat atributy připojení:
<?php
$database = 'myDatabase';
$server = 'myServer';
$username = 'myuser';
$password = '<password>'
$conn = new PDO("sqlsrv:server=$server; Database = $database", $username, $password);
$conn->setAttribute(PDO::SQLSRV_ATTR_FORMAT_DECIMALS, true);
$conn->setAttribute(PDO::SQLSRV_ATTR_DECIMAL_PLACES, 2);
$query = 'SELECT smallmoney1 FROM testTable1';
$options = array(PDO::SQLSRV_ATTR_FORMAT_DECIMALS => false);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn('smallmoney1', $field);
$result = $stmt->fetch(PDO::FETCH_BOUND);
echo $field; // expect a number string showing the original scale -- 4 decimal places
unset($stmt);
unset($conn);
?>
Viz také
Formátování desetinných řetězců a hodnot peněz (ovladač SQLSRV)