2017-06-23 22:09:37 +02:00
|
|
|
--TEST--
|
|
|
|
prepare with cursor buffered and fetch a float column
|
|
|
|
--SKIPIF--
|
2017-10-04 22:16:25 +02:00
|
|
|
<?php require('skipif_mid-refactor.inc'); ?>
|
2017-06-23 22:09:37 +02:00
|
|
|
--FILE--
|
|
|
|
<?php
|
|
|
|
function FlatsAreEqual($a, $b, $epsilon = 3.9265E-6)
|
|
|
|
{
|
2017-10-04 22:16:25 +02:00
|
|
|
return (abs($a - $b) < $epsilon);
|
2017-06-23 22:09:37 +02:00
|
|
|
}
|
2017-10-04 22:16:25 +02:00
|
|
|
require_once("MsCommon_mid-refactor.inc");
|
2017-09-28 18:48:08 +02:00
|
|
|
|
2017-10-04 22:16:25 +02:00
|
|
|
try {
|
|
|
|
$conn = connect();
|
|
|
|
$sample = 1234567890.1234;
|
2017-06-23 22:09:37 +02:00
|
|
|
|
2017-10-04 22:16:25 +02:00
|
|
|
$tbname = "TESTTABLE";
|
2017-10-10 20:34:59 +02:00
|
|
|
createTable($conn, $tbname, array("c1" => "float(53)"));
|
2017-09-28 18:48:08 +02:00
|
|
|
|
2017-10-04 22:16:25 +02:00
|
|
|
$query = "INSERT INTO $tbname VALUES(:p0)";
|
|
|
|
$stmt = $conn->prepare($query);
|
|
|
|
$stmt->bindValue(':p0', $sample, PDO::PARAM_INT);
|
|
|
|
$stmt->execute();
|
2017-06-23 22:09:37 +02:00
|
|
|
|
2017-10-04 22:16:25 +02:00
|
|
|
$query = "SELECT TOP 1 * FROM $tbname";
|
2017-06-23 22:09:37 +02:00
|
|
|
|
2017-10-04 22:16:25 +02:00
|
|
|
//prepare with no buffered cursor
|
2017-10-10 20:34:59 +02:00
|
|
|
print "no buffered cursor, stringify off, fetch_numeric off\n"; //stringify and fetch_numeric is off by default
|
|
|
|
$stmt = $conn->prepare($query);
|
2017-10-04 22:16:25 +02:00
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "no buffered cursor, stringify off, fetch_numeric on\n";
|
|
|
|
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true);
|
|
|
|
$stmt = $conn->prepare($query);
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "no buffered cursor, stringify on, fetch_numeric on\n";
|
|
|
|
$conn->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
|
|
|
|
$stmt = $conn->prepare($query);
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "no buffered cursor, stringify on, fetch_numeric off\n";
|
|
|
|
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, false);
|
|
|
|
$stmt = $conn->prepare($query);
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
//prepare with client buffered cursor
|
|
|
|
print "buffered cursor, stringify off, fetch_numeric off\n";
|
|
|
|
$conn->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
|
|
|
|
$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED));
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "buffered cursor, stringify off, fetch_numeric on\n";
|
|
|
|
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true);
|
|
|
|
$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED));
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "buffered cursor, stringify on, fetch_numeric on\n";
|
|
|
|
$conn->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
|
|
|
|
$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED));
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
print "buffered cursor, stringify on, fetch_numeric off\n";
|
|
|
|
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, false);
|
|
|
|
$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED));
|
|
|
|
$stmt->execute();
|
|
|
|
$value = $stmt->fetchColumn();
|
|
|
|
var_dump($value);
|
|
|
|
$ok = FlatsAreEqual($sample, $value) ? 'TRUE' : 'FALSE';
|
|
|
|
print "\nFetched value = Input? $ok\n\n";
|
|
|
|
|
|
|
|
dropTable($conn, $tbname);
|
|
|
|
unset($stmt);
|
|
|
|
unset($conn);
|
|
|
|
} catch (PDOException $e) {
|
|
|
|
var_dump($e->errorInfo);
|
|
|
|
}
|
2017-06-23 22:09:37 +02:00
|
|
|
?>
|
|
|
|
--EXPECT--
|
|
|
|
no buffered cursor, stringify off, fetch_numeric off
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
no buffered cursor, stringify off, fetch_numeric on
|
|
|
|
float(1234567890.1234)
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
no buffered cursor, stringify on, fetch_numeric on
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
no buffered cursor, stringify on, fetch_numeric off
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
buffered cursor, stringify off, fetch_numeric off
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
buffered cursor, stringify off, fetch_numeric on
|
|
|
|
float(1234567890.1234)
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
buffered cursor, stringify on, fetch_numeric on
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|
|
|
|
|
|
|
|
buffered cursor, stringify on, fetch_numeric off
|
|
|
|
string(15) "1234567890.1234"
|
|
|
|
|
|
|
|
Fetched value = Input? TRUE
|