summaryrefslogtreecommitdiff
path: root/ext/pdo_dblib/tests/types.phpt
blob: fa336d9fb44972a666af3793197a1ac88d9f4085 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
--TEST--
PDO_DBLIB: Column data types, with or without stringifying
--SKIPIF--
<?php
if (!extension_loaded('pdo_dblib')) die('skip not loaded');
require __DIR__ . '/config.inc';
?>
--FILE--
<?php
require __DIR__ . '/config.inc';

function get_expected_float_string() {
    global $db;

    switch ($db->getAttribute(PDO::DBLIB_ATTR_TDS_VERSION)) {
        case '5.0':
        case '6.0':
        case '7.0':
        case '7.1':
        case '7.2':
        case '8.0':
            return '10.500';
        default:
            return '10.5';
    }
}

$sql = "
    SELECT
        'foo' AS [char],
        CAST('2030-01-01 23:59:59' AS DATETIME) AS [datetime],
        CAST(0 AS BIT) AS [false],
        10.500 AS [float],
        1000 AS [int],
        CAST(10.500 AS MONEY) AS [money],
        CAST('1950-01-18 23:00:00' AS SMALLDATETIME) as [smalldatetime],
        CAST(1 AS BIT) AS [true]
";

$stmt = $db->query($sql);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

var_dump($row['char']);
var_dump($row['datetime']);
var_dump($row['false']);
var_dump($row['float']);
var_dump($row['int']);
var_dump($row['money']);
var_dump($row['smalldatetime']);
var_dump($row['true']);

$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
$stmt = $db->query($sql);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

var_dump($row['char']);
var_dump($row['datetime']);
var_dump($row['false']);
var_dump($row['float'] === get_expected_float_string());
var_dump($row['int']);
var_dump($row['money']);
var_dump($row['smalldatetime']);
var_dump($row['true']);

?>
--EXPECT--
string(3) "foo"
string(19) "2030-01-01 23:59:59"
int(0)
float(10.5)
int(1000)
float(10.5)
string(19) "1950-01-18 23:00:00"
int(1)
string(3) "foo"
string(19) "2030-01-01 23:59:59"
string(1) "0"
bool(true)
string(4) "1000"
string(5) "10.50"
string(19) "1950-01-18 23:00:00"
string(1) "1"