php-sqlsrv/test/functional/sqlsrv/sqlsrv_623_varchar_max_client_buffer.phpt
2018-01-22 13:58:09 -08:00

59 lines
2.1 KiB
PHP

--TEST--
GitHub issue #623 - data is correctly fetched using a client buffer even with varchar(max) in the result set
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
sqlsrv_configure('WarningsReturnAsErrors', 1);
// step 01: Connect without Always Encrypted feature
require_once('MsSetup.inc');
$conn = sqlsrv_connect($server, $connectionOptions);
if (! $conn) {
fatalError("Failed to connect\n");
}
$tableName = 'systemtag';
// step 02: Setup table
require_once('MsCommon.inc');
dropTable($conn, $tableName);
$sql = "CREATE TABLE [$tableName](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](255) NOT NULL,
[tag] [varchar](max) NULL,
CONSTRAINT [PK_usertag] PRIMARY KEY CLUSTERED (
[id] ASC
))";
$stmt = sqlsrv_query($conn, $sql);
// step 03: Insert test data
$name = 'Disclaimer e-mail';
$tag = 'De informatie van deze e-mail en de eventueel bijgevoegde bestanden is vertrouwelijk en kan juridisch beschermd zijn. Het is uitsluitend bedoeld voor degene(n) aan wie het gericht is of degene(n) die geautoriseerd zijn om het bericht te ontvangen. Indien het bericht niet voor u bestemd is, wordt u verzocht de inhoud ervan niet te lezen, en het bericht aan ons terug te sturen. In dat geval wijzen wij u er tevens op dat het kopië';
$sql = "INSERT INTO $tableName (name, tag) VALUES (?, ?)";
$parameters = [$name, $tag];
$stmt = sqlsrv_query($conn, $sql, $parameters);
// step 04: Fetch the data
$sql = "SELECT name, tag FROM $tableName";
$stmt = sqlsrv_query( $conn, $sql, [], ['Scrollable' => SQLSRV_CURSOR_CLIENT_BUFFERED]);
$result = sqlsrv_fetch($stmt);
if ($result) {
$value1 = sqlsrv_get_field($stmt, 0, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR));
var_dump($value1 === $name);
$value2 = sqlsrv_get_field($stmt, 1, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR));
var_dump($value2 === $tag);
} else {
fatalError('Something went wrong\n');
}
dropTable($conn, $tableName);
echo "Done\n";
?>
--EXPECT--
bool(true)
bool(true)
Done