php-sqlsrv/test/functional/sqlsrv/sqlsrv_data_types_fetch_binary_stream.phpt

111 lines
19 KiB
Plaintext
Raw Normal View History

2017-02-24 06:40:51 +01:00
--TEST--
Test insert various data types and fetch as strings
--FILE--
<?php
require_once('MsCommon.inc');
require_once('tools.inc');
2017-02-24 06:40:51 +01:00
function FetchAsStream_Binary()
{
set_time_limit(0);
sqlsrv_configure('WarningsReturnAsErrors', 1);
2017-02-24 06:40:51 +01:00
// Connect
$connectionInfo = array("CharacterSet"=>"UTF-8");
$conn = connect($connectionInfo);
if (!$conn) {
fatalError("Could not connect.\n");
}
2017-02-24 06:40:51 +01:00
$tableName = GetTempTableName();
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName ([c1_int] int, [c2_char] char(512), [c3_varchar] varchar(512), [c4_varchar_max] varchar(max), [c5_nchar] nchar(512), [c6_nvarchar] nvarchar(512), [c7_nvarchar_max] nvarchar(max), [c8_text] text, [c9_ntext] ntext, [c10_binary] binary(512), [c11_varbinary] varbinary(512), [c12_varbinary_max] varbinary(max), [c13_image] image, [c14_timestamp] timestamp)");
2017-02-24 06:40:51 +01:00
sqlsrv_free_stmt($stmt);
2017-02-24 06:40:51 +01:00
$numRows = 0;
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-02-24 06:40:51 +01:00
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-02-24 06:40:51 +01:00
$sql = "SELECT * FROM $tableName ORDER BY c14_timestamp";
$stmt = sqlsrv_query($conn, $sql);
2017-02-24 06:40:51 +01:00
$metadata = sqlsrv_field_metadata($stmt);
$numFields = count($metadata);
$stmt2 = sqlsrv_query($conn, $sql);
2017-02-24 06:40:51 +01:00
$i = 0;
while ($result = sqlsrv_fetch($stmt)) {
2017-02-24 06:40:51 +01:00
echo "Comparing data in row " . ++$i . "\n";
$dataArray = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_NUMERIC);
for ($j = 1; $j < $numFields - 1; $j++) { // skip the first and timestamp columns
2017-02-24 06:40:51 +01:00
if ($j < 9) { // character fields
$value = sqlsrv_get_field($stmt, $j, SQLSRV_PHPTYPE_STRING('UTF-8'));
CompareValues($value, $dataArray[$j]);
} else { // binary fields
2017-02-24 06:40:51 +01:00
$stream = sqlsrv_get_field($stmt, $j, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));
CompareBinaryData($stream, $dataArray[$j]);
}
2017-02-24 06:40:51 +01:00
}
}
$noActualRows = $i;
sqlsrv_free_stmt($stmt);
sqlsrv_free_stmt($stmt2);
sqlsrv_close($conn);
2017-02-24 06:40:51 +01:00
}
function CompareValues($actual, $expected)
{
2021-07-29 00:45:04 +02:00
if (is_null($expected)) {
return (is_null($actual));
}
$len = (empty($expected)) ? 0 : strlen($expected);
return (strncasecmp($actual, $expected, $len) === 0);
2017-02-24 06:40:51 +01:00
}
2017-02-24 06:40:51 +01:00
function GetQuery($tableName, $index)
{
$query = "";
switch ($index) {
2017-02-24 06:40:51 +01:00
case 1:
$query = "INSERT INTO $tableName ([c1_int], [c2_char], [c3_varchar], [c4_varchar_max], [c5_nchar], [c6_nvarchar], [c7_nvarchar_max], [c8_text], [c9_ntext], [c10_binary], [c11_varbinary], [c12_varbinary_max], [c13_image]) VALUES ((1), ('üb_rÃß|AZ_Uß.zðýªu+bz©£+_ü_©+o<öoý@îÐbÄÖðîä.ª>ärBãý>brCZ:O©ÄvåÃCbZ¢/ßAU__ªh.ßuÖAB*|_Oýîüär:|,ý>AuÐ*Zä:.b~:ö:bÐ@r:¢¢özhöb.©|ªªÄh|CCobî:O©ö>üÐA<îhÄuBÖ+_ÄBÜUîråß>åZ.zö|/zý:öaãOubðÜ/î+ª.O~.bZ©|ýßhab/¢hö~vðCz/_åð|Oü/:îCvîrÖ|>h£'), (' '), ('ßBß/ßãã¢:>bÜA@hÖ<~|*uåß_/.,BhvÃãUÃbãÖÜO~ªZÃßß/ÄA*,OåîߣöZva.:Ö<oßU@+<zýÄ.ýÐöraÄýÃ+ÖÖBßð:bC_>ÜÜhäß@ý|î+~A.<<ðBÄÐv|aÄBaÐbý*bz*Ü>ö¢ãåCÃahb*ÜÐ*¢*ý++.vöÖbAãB:ýuãbUUð_äBr~bU.ð+zZ,:©*Ðöö@_O|ßAauaðUZ_</B<îhÜ*a|ãÄÐ|Ða*åBBzÖ,*zZO|ßu>©bÜßö*O:ªOª>ý+ãb<ZuÃAoruÐbÜo¢ör_Übo¢öÖÜÃh:>îÐU,ý<rÄvª|:@ä|Bî~Aã£ýbÄðOrCÐ@__ª©Z@<©ßÃ.Uððu¢©Ö.£åBCªäð©|:ßvbüÜbaãä~A¢uß+/.bh>z_:ÐB¢//ýß,äðrý/zvoårÜßO+A©zÜo<å_bhUß+åh¢ªäbOOÄAßðCCåUv|Ðv+büC©ß*>*äbÖ¢ö,aU¢ðÖýo*£_ãb+ývߪ_|aßO@öAÄÄäãöAzoÐåa©¢üvOÐ*~ßÜý@bb>rbö|ßÐÃîbZz>Ã>@î¢BUhü~vßBäöCUÐOßÜ<ãUrobvüÐðüåu©bzä+.ßð@£ßh<üß~£zC@Ðr©vÄ<Aüou£ZðäOäß.,ÜýãöO<bÃB>.Bªä,@:/bhî+ãÜZý>u¢ÜðÜuö*@åU>ß©Üö>ÖCb:_*Ö:ÖU>.hb©Oüßbz~£å©_ä£OðU>C.+aoöbÄvA<aü<ð+ߪZãäÄ£ðBU,ð©Ä|@@Ü+ýßb>uîBßvB£îOª>ã~£.¢/Ü/îî~hA~<ö>OBð~ÖCbðÖî+ß<+OzoåüåChöu+o~©ÜbußohÄB©ðB<~<å@.¢/|,ßåÃ>b,AoÄr~_.oé|©*£B£uÜ@z£v/ßÖÐaZöO_zBÖ©ðüÐ@ðOzrääöBîvO£îýÖÖÜÐå:ä@Br>Cu~ªýoÃ@v~hzb~üߣCAÜ|£**aåOBv£/bCÄТ,>ðB>C£/¢/Äoî©u.b/ö>îU~Bü~U¢obr+ã*/hOðv/ýîÄ~OAOª/aýÄÜUÐhîãCðåav|u+*~uBuoh@>ý_aðö.£rhb@~~ªZu*ß+|ý£o+ßâ+zÜã|UÖÖ¢îðO_ußC>ÐßÜüöäå+ßü@*+£BvÜvå,Uözßä©z/¢ãzO_ãAð£/<î<ÜZU.UvßîÖüîÖuÜ<öBZ_.Äb@r_bah+.Zðª>h©£rhÜÐCÃbãh_C>o£býý@~Að*£*îB.ÃÄå~Uªö©å_ÄöhýäZhB£bÄÄa*Ã|ßÃ*îb*~o.ÜÖüåîrýr:v|:bbA@uUaÃýÄ_åÃÜvzü<,+ü~b|ouÖåÄ@|bCCÖ¢Z,ßb|>/bubOCðÃUüîO<>ý>+ý@hü<h<Ü~a£a~£zß>oa*bb£öAv~oö£v£ßAã~/@ööÖz¢Bv©©z~,ýzýhvöärör|ZßöÖaO_ßÖ,üub~Ö:_©,ªUª|£ü£©ÖåÄr~Ð,<@©+v<C@ãýaBð~_@z|~¢ZÄUZÜ+_ßöAO.>ÃCUÜO.î>ÖÖ~¢äÐBu,,©aCBÖU,~îö*|ßߢªu<vÖho©C|öÃÃî£:||©_.,ª+a.ª>öhOüÖýv>¢ü£u>*ý|ß|ÃÃU@ßahZuu£Cv+_©Ðü+ýðãhߪð/Ab,b|:Äðu:+Oã<ÜAä@ÃvÃã¢aOߢaACÃObÄUoäª|ß©¢/vªoo<îªZZî©ÐO:+äÐßÃîCÖOCCr¢OUöå¢b/*/a£oC/ã,Z/übÄ>Ðã'), (null), (N'Z@/bAUZ/A+AA©ÜBöãb©~<v+åÄohîÃ@Cå£+CãýüªðãaßAv,Zzª|îÖ*.vAh|*åB,Ð@uh,z£vüä>ÐÐ:<zªzäãzh¢,_uBBÃ/¢Ðã:vZßCýý©*ªAv¢©ß|ßöaavbªåä¢hr|ª_UÖîZOo@<*äoü_ªCð~Z_ä>ªÄ|,Ã/ö@ãßCÐbß@Ä,£.z<ÃoBBbZÖÄ~ðaÐb£b*î@Ö|ü>bbU<ߪrO©C|að_<Z¢CrßUäBaAh:,>C©Ö@rbbäª>h>.våObÄ@å¢î¢*ouröu:©oãÄ_<ß>Ð:./a£bzäªrãý:ð>äub.+üåC¢oßý©ÄÖ/,|ýb<råüvã,¢Ð.<uu*ãZ/,CÖ~Zßäãb£oäß:/:äA©+bh@ªU,uêÖ*ä:ýa/U<O.ahrOuÜöüAÜ,zOö*U¢o*î~ou*zZ.ß/ýr,äv*öö*,>:U£ß,A©@£Ößbhvßäîäåð,h_b~ý:ðª.zZßä<z@/üZ£åh©OCU~:>bb::BZЪu.~ÖîU:_ZZß>*>åªZ>ýäå<Öå<C+uã*ÖoªðO~Äåüîu£ãößüh~Oäo¢zäÐÜ©ÄvßîrÃö'), (null), (null), (N' '), (0x1A17A8AE2F75EF49041BB52C2B8410480F3AB04E569C7253A385D9AEFFA6B2CD7DF47772A908D645187B9C5BEAA4AA9616CD1CDD6D47957DA5540BA99B41495E69E8AE370C9E9F07636B36DAFF1669FEDB43973189D55F365FF9CC55FC2DA9D7313EF201F6738A782E14790211BB7D8EEA0CCE58A918D4938977D712D14A0A36C15EA8C123680867B81F03755B5C25A37C3D6AEF5F502E19695E787E9B77A7E3094340B212BC6B8103669F89155F372C52349693DF1BD771308F57C5EF8ACB40781F6B181C7290BFD2E8EBF8B0A4030A264C2B67E11303EE6BCF828364A692799A5F11F5F31F10E0A3D6C0F62FDEC08C8B4D9EA35E645F641B7DAC4CF00D5A2C56725D51920E17073C4BC40A520DBF8D0FF5F71707EE1A36FFACDA7672C3EF957B94A0BD806EF97D36966713A054120EBE1F3DFA15
break;
case 2:
$query = "INSERT INTO $tableName ([c1_int], [c2_char], [c3_varchar], [c4_varchar_max], [c5_nchar], [c6_nvarchar], [c7_nvarchar_max], [c8_text], [c9_ntext], [c10_binary], [c11_varbinary], [c12_varbinary_max], [c13_image]) VALUES ((1395754036), (null), ('ßßÄý@åo£UÄBüîvö~£:î>:ЩÖîzU@av¢vÐbC+rýU:_îbUo.ä+|bBCBªÜbhüBr£££üBßußoª,£r<ü_©.~>:åüöo>OhzbruîAßåvBo*OArüÃ<ð££u,Ð.ª'), ('ÃÄߪ£B@B,oÖo©Bv~UuZ/©ýUÃ~|@b©>ãZvAO|v~ÄB_C~_ÐÖü_üß>oz+BÃ<haBª//î*:î¢îÐz©_rå|/Äüã~üCäý©ýðö>Bh|¢@BÃÃrvã+£U>ߢB<_vÖoO@¢z|î©:ýÃ.¢OCîÃßåÖ@Ãýu*å,obå:.u+ü,BåÜCÜ_ãä©u¢ZÄÐ/é_u>OZZ:OТ~_ZOvrÐßßaÖüüäh|BUb<*<ÜÖÄh>Oß~*öAðUz,b+Büð¢©î|U£bÐOrBvZBÖ|<CÐ|ýrÃßðbªßObåý>.ãBãhåähB.CãÖ£o|ß~u+/ð.ýB£rAu_hzCßåv©Ä*Uå/îß|üO.:U+<©£b>:CÐ@Ãßî|UßÐüÜåîCUý<aA~/h<ߪüO©©>Ð,ß_ýã~b@+~Öur£|*Uu©ob<åÃ~bårð,ªhUU,b,C/..>Ãa©ðUob¢ð/ýz©ðöã/ÜÃä~üü¢ýüv<ühßUÜ~ßäa©ßÐoZ:ohðª:C_Ä£Ð_ðÄAbðZå~©ß¢Ð|bhbãÖüüÄv_ß<b,ß*:/O_u£bãüÐ@㪣©|.,@zbÄö©Öã£Or~äîbur+/Oz:bUäA:CC¢ävbÃå@ZÖ<@Ü.ýî¢,ä¢Ü+:ZCubbUßãðr£ÐAzö_OA|ð:åð/ð:o¢>oã*ÖO|hã£ßU>ð|zh©ü~ÃäÃ~r/ý.rßC¢bO+Ü+ZüäÖßÃ_uZ:_*¢vv<~ö¢<UhzOoöA_OoZ~ÜöãÃCãåoo+îý<b~@äo@UÐZBo©Ãªã£aAChü|©:~+Öb:zîu*Äb+@©a©bã>ãÃA:ub_hzÜä@@ðbZßÖOvýrözü@<C*A<bCbãÜ_ð_aðO~:>r~::,uðä~@£ÐÄ<Ä~.ßZzÜ./BzÖåuO+ߢ>ãÖöAÃüß|r_~OAß:ß:_,ZCÄßh+C¢*ÃÃuÄaUäÄÜ_Äã>Ü|ääîZð/.Öß/*+hößÃ~*<ä_zåoÜöÐbîß|ß+höv:ãÃîZð.vÃåÐÜöäh>AðA|üÐ@ýÄ+äaå_aýa_uУ|~ªîª>îuüBAÃbÜ/C,zÄzÄrðb..oäÐÖ/£.ã<+/©+UªÜÐUßzßÖªå£u@/ö+£@>rzb>uÃ,ZrZbÄÐö:Ðö<©vB~.väBrCýîCÄîooð|v@~/Aª<_oðZbÃýåüU.¢ðÜ¢C<vzzO+ß|Ü_o©üBãbýöÐÄOðbZîUÖ£Ö_aÜ©,BoÄZvo++@__*ðå/+£ýAðö|rA.ö¢oßU,Öð*Oãz*A/z'), (N'üöß~¢hoðzÃääÄArZuBý©@~uZÜ@ßÜu>ß|A+vO/äüCz>bbb<>ßCbß*zUz,Ä@ßCz.Ããåzã+ÜAå+hä*A@Ouzaa£OÃ<uÜAå>îbäßðßUOÖ¢hABO:r<ðZä_Z<BZÖ@h/bb*å_üZZb.uvý<Äåý|auvÜäÐAüªªÖ@OZBÜ©|ßo|roî.@bª_ßÜrzO@ðhzrªä~+Ã_|uöOußhbßaßb+++©//ßã|OýÜo¢++uzüã>,ãvh/ZA¢h@oÄäßöãð/h~ãü,uoa¢:ßä@bö~ü@B_ahÖu.©ßbzß.@ZåßU£.<Aü.Ã~ãZaCÜZß:Ö./aߢ~Ä.BÄßbZ|¢uÃð~bb|ª:O.C©ÄZaýüÖî<ß:AãÜ¢åÄå__Ð.åb+U,Äãß|£u:AÄßÃßB|©h/UîÐZ:©î~©ä.vßu©Ð~Ab©Ußß.ÐðBAb/ýbU<ß:_Bvoðýý,AÜî|ab@@ª>O<Bz~_|ä>uä*a*.rr>ÜîÐUß/+öA|aýð><ÜZ++r_Öªb>Ö@ÃÖ|hßåAÐÄÖö£Ãö¢@aä@Z+åUbbäýöAZÃÖbîÃr<.rBåÜÜA*ÄÃUðU~rý<h'), (N'>BöîbÃ.bOªÜv/A¢£..ªCrÄ*OÐAßÄ<ÖªÜåÃýZUrßb+ühCðü@rö~~b_ÃzÜÜÜobîê:aý.ÐA*,Oª_Üu~rvÜ_~Üîo|uO,u@>bÜo©,ÄCð~ÜOªO,:aðbr~@.@zðÃv:Ür*ßãåhã+Bääb+OÖ,oÄÜBuvzAðý©UäÖÃ:©h+/.ÜZU¢£ãu*>orÖðÜü>+|öAÖîî>~@*o./rã*ý,/_<~:BÃ:ã:@ðýÄüZª/,£ä.ÜAh>böbö,/ð,|öåü@öb<bAb~+::Cª/ö+_AÜ::öAÖ,åbbý¢oa/£ð:~.zÖü|h¢>ü+ü<~ä_O:@|îzBOöý~ÖZ:Ãö>>ÜCÄA<îß/v/_C¢/Ö¢ßüh+_vzhßýü,zbv.<ýßÐãoý¢Ð>béß,oýâÐßCü@ß|u<ð/CuhC©¢¢aÜ©ý@£br£<ý¢ß.£/_~*avövð@ÃZ,ß__oÖ|üîüÖZ>ðZobUäCA<ߢ|*¢*b>Ð<ã+©,CöãäU/Ð<ßväBüÜOã|UîAðýãhuî.uv<hUðbh/ýåªÐ*ßv>@+ZZAßvBÜ+rüýÐa_*u_ßÄäbÐbv©Ã©oÃBÄ+'), (N'ªBO:Ob>|ãO/väb.CZ<Ü£Z~UÜoª/ª©BU£BoöuAb¢©,@åää,ß~Ü~ßU~ü|aä/Zª¢ååÖðÜoÄCObuãBvßÃ,ðÜßäßbZabCªð,¢ÜAb>¢höbuB<ª@~.<ÄÜ*<>@ßÜbß:ðÄACOß<:ßbßo_:ã|Ã,u~Īª/ߪîCUuv/ãÄa,Oývßbh¢/î¢ßa£üC,ãuÐ*C¢Zªî*O~Ü,*ã:<+ÃC:_~ýO@rßå<ZCü©U~ÄÃîÄöA£_vü~o¢:v,Ão+öBBßaåî:åÜÐäÜuÜü:|ߢö_ýðßzZ©©¢rðßzz>¢åîßbªÖÖ|Cßöä<ããä_/.BoýÃ~uÜU~ßA<îv+|£ý~+ßu,Ã@*ßrß+bZåð,:årUßß>OÖb*b~CvOäöb¢åßZOU/~<rÖÖ~ýåîÃ:ÖÖ|Zb¢ªOZub@OO*ßZ@©~Aý,uAüý*ÖbÄuªÖCr_zßoÃýör>öA~/ÜÃ+uB/Ü+zvb£v:u_äð/bhZýÃ>åAbOÐbö.ðü,*ý>**ãrbÖ@/|Äãaª@Z<ÄÃÐr,ÄOªOCU+<äO<C3A4>
break;
default:
break;
}
return $query;
}
function Repro()
{
startTest("sqlsrv_data_types_fetch_binary_stream");
echo "\nTest begins...\n";
try {
2017-02-24 06:40:51 +01:00
FetchAsStream_Binary();
} catch (Exception $e) {
2017-02-24 06:40:51 +01:00
echo $e->getMessage();
}
echo "\nDone\n";
endTest("sqlsrv_data_types_fetch_binary_stream");
2017-02-24 06:40:51 +01:00
}
Repro();
?>
--EXPECT--

Test begins...
2017-02-24 06:40:51 +01:00
Comparing data in row 1
Comparing data in row 2
Done
Test "sqlsrv_data_types_fetch_binary_stream" completed successfully.