xref: /PHP-8.2/ext/pdo_sqlite/tests/bug38334.phpt (revision 417f3fdb)
1--TEST--
2Bug #38334: Proper data-type support for PDO_SQLITE
3--EXTENSIONS--
4pdo_sqlite
5--FILE--
6<?php
7
8$db = new PDO('sqlite::memory:');
9$db->exec('CREATE TABLE test_38334 (i INTEGER , f DOUBLE, s VARCHAR(255))');
10$db->exec('INSERT INTO test_38334 VALUES (42, 46.7, "test")');
11var_dump($db->query('SELECT * FROM test_38334')->fetch(PDO::FETCH_ASSOC));
12
13// Check handling of integers larger than 32-bit.
14$db->exec('INSERT INTO test_38334 VALUES (10000000000, 0.0, "")');
15$i = $db->query('SELECT i FROM test_38334 WHERE f = 0.0')->fetchColumn(0);
16if (PHP_INT_SIZE >= 8) {
17    var_dump($i === 10000000000);
18} else {
19    var_dump($i === '10000000000');
20}
21
22// Check storing of strings into integer/float columns.
23$db->exec('INSERT INTO test_38334 VALUES ("test", "test", "x")');
24var_dump($db->query('SELECT * FROM test_38334 WHERE s = "x"')->fetch(PDO::FETCH_ASSOC));
25
26?>
27--EXPECT--
28array(3) {
29  ["i"]=>
30  int(42)
31  ["f"]=>
32  float(46.7)
33  ["s"]=>
34  string(4) "test"
35}
36bool(true)
37array(3) {
38  ["i"]=>
39  string(4) "test"
40  ["f"]=>
41  string(4) "test"
42  ["s"]=>
43  string(1) "x"
44}
45