2017-02-24 23:11:29 +01:00
|
|
|
--TEST--
|
|
|
|
fetch columns using fetch mode and different ways of binding columns
|
|
|
|
--SKIPIF--
|
2017-05-02 21:00:53 +02:00
|
|
|
<?php require('skipif.inc'); ?>
|
2017-02-24 23:11:29 +01:00
|
|
|
--FILE--
|
|
|
|
<?php
|
|
|
|
|
2017-05-02 21:00:53 +02:00
|
|
|
include 'MsCommon.inc';
|
2017-02-24 23:11:29 +01:00
|
|
|
|
|
|
|
function FetchMode_BoundMixed()
|
|
|
|
{
|
2017-05-02 21:00:53 +02:00
|
|
|
include("MsSetup.inc");
|
2017-02-24 23:11:29 +01:00
|
|
|
|
|
|
|
set_time_limit(0);
|
|
|
|
$tableName = GetTempTableName();
|
|
|
|
|
2017-05-02 21:00:53 +02:00
|
|
|
$conn = new PDO( "sqlsrv:server=$server;database=$databaseName", $uid, $pwd);
|
2017-02-24 23:11:29 +01:00
|
|
|
|
|
|
|
$stmt = $conn->exec("CREATE TABLE $tableName ([c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml, [c29_time] time, [c30_date] date, [c31_datetime2] datetime2, [c32_datetimeoffset] datetimeoffset)");
|
|
|
|
|
|
|
|
$numRows = 0;
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
$stmt = $conn->query($query);
|
|
|
|
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
$stmt = $conn->query($query);
|
|
|
|
|
|
|
|
$cols = array_fill(0, 32, null);
|
|
|
|
$stmt = $conn->prepare("SELECT * FROM $tableName ORDER BY c27_timestamp");
|
|
|
|
$result = $stmt->execute();
|
|
|
|
$stmt->bindColumn('c1_int', $cols[0]);
|
|
|
|
$stmt->bindColumn('c2_tinyint', $cols[1]);
|
|
|
|
$stmt->bindColumn(3, $cols[2]);
|
|
|
|
$stmt->bindColumn(4, $cols[3]);
|
|
|
|
$stmt->bindColumn(5, $cols[4]);
|
|
|
|
$stmt->bindColumn(6, $cols[5]);
|
|
|
|
$stmt->bindColumn(7, $cols[6]);
|
|
|
|
$stmt->bindColumn(8, $cols[7]);
|
|
|
|
$stmt->bindColumn('c9_numeric', $cols[8]);
|
|
|
|
$stmt->bindColumn('c10_money', $cols[9]);
|
|
|
|
$stmt->bindColumn('c11_smallmoney', $cols[10]);
|
|
|
|
$stmt->bindColumn('c12_char', $cols[11]);
|
|
|
|
$stmt->bindColumn(13, $cols[12]);
|
|
|
|
$stmt->bindColumn('c14_varchar_max', $cols[13]);
|
|
|
|
$stmt->bindColumn(15, $cols[14]);
|
|
|
|
$stmt->bindColumn('c16_nvarchar', $cols[15]);
|
|
|
|
$stmt->bindColumn(17, $cols[16]);
|
|
|
|
$stmt->bindColumn(18, $cols[17]);
|
|
|
|
$stmt->bindColumn(19, $cols[18]);
|
|
|
|
$stmt->bindColumn('c20_binary', $cols[19]);
|
|
|
|
$stmt->bindColumn(21, $cols[20]);
|
|
|
|
$stmt->bindColumn('c22_varbinary_max', $cols[21]);
|
|
|
|
$stmt->bindColumn(23, $cols[22]);
|
|
|
|
$stmt->bindColumn(24, $cols[23]);
|
|
|
|
$stmt->bindColumn(25, $cols[24]);
|
|
|
|
$stmt->bindColumn(26, $cols[25]);
|
|
|
|
$stmt->bindColumn('c27_timestamp', $cols[26]);
|
|
|
|
$stmt->bindColumn('c28_xml', $cols[27]);
|
|
|
|
$stmt->bindColumn(29, $cols[28]);
|
|
|
|
$stmt->bindColumn(30, $cols[29]);
|
|
|
|
$stmt->bindColumn(31, $cols[30]);
|
|
|
|
$stmt->bindColumn('c32_datetimeoffset', $cols[31]);
|
|
|
|
|
|
|
|
$numFields = $stmt->columnCount();
|
|
|
|
|
2017-05-02 21:00:53 +02:00
|
|
|
include("pdo_tools.inc");
|
|
|
|
|
2017-02-24 23:11:29 +01:00
|
|
|
$i = 0;
|
|
|
|
while ($row = $stmt->fetch(PDO::FETCH_BOUND))
|
|
|
|
{
|
|
|
|
echo "Comparing data in row " . ++$i . "\n";
|
|
|
|
$query = GetQuery($tableName, $i);
|
|
|
|
$dataArray = InsertDataToArray($stmt, $query, $numFields, $i);
|
|
|
|
$j = 0;
|
|
|
|
foreach ($cols as $value)
|
|
|
|
{
|
|
|
|
CompareData($stmt, $i, $j, $value, $dataArray[$j]);
|
|
|
|
$j++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$stmt = null;
|
|
|
|
$conn = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
function GetQuery($tableName, $index)
|
|
|
|
{
|
|
|
|
$query = "";
|
|
|
|
switch ($index)
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml], [c29_time], [c30_date], [c31_datetime2], [c32_datetimeoffset]) VALUES ((1448461366), (110), (-28270), (804279686), (0), (0), (null), (-100000000000000000000000), (0.6685), (0.2997), (0.5352), ('äðubý/ö*bUah¢AoÖrZÃ_oßoüöÐ>ßÄßUAüîÖh_u*uh.uå:,öî@<BCãå,AÖvBvöC¢ZaüoÐZarüö<.Ö~Z@~Ü~zUÄCrB_Ä,vhbZaÜöä<ruª>UCO,<¢<:Ö@>+ß,ªåÜbrª¢öãäo,ü£/b,|ýãý~öߣîUö_¢ªðu.+ýÃhAaäzvzrb£ßAÃhö,ö.aöü/Z+Ã.uvUo~v:+u_ýý©z¢ª|U/îã<©|vý+bÐÄЩoðbbüðb_~*î..üÐÃz,äAðß~Ö¢Äå~ð.£_ßzãÖv~¢£Oå*@|UozU©Ð+ãÄÐ,*Z/vA>ªOÄ,¢bhý/ÖÖuäA<bO+||zv©vÃBª<.ýh+¢ÃvhßO£bOvUýª¢äÄðvBbÄ<O*@/Ä@<©~:ª,¢oÖzUaÐ<,baÃÃbuå_CåB£h@ö£.<Cª@Ãß.raÃöªAb*UBCzãУZªh<|@Ö<©ßÃä|¢ää,rZ<b_ööBßÜ.A,¢ß©ããa,uUî<_Ahðo_Ä,uÖC_vªÖ£O+ÖÐ+:vOårÐÜã>oü.a@@ßaðvbaߣ@v,ub+Oä@oBBÖöAüßö|Ö~hhvbuäo/<Ã+£¢Ã¢ß>'), ('Z:Uî/Üãýü<C<bb+CCoä@a:A<Ö:Cv/hzub:ZÄî+£<aO:ý~î~~z>Äzãüvä/Ühý£||ãoå,ªÜ©uÖ_.>ßýbåää|üð/ý.BO:ZCu©ß<£ªãÄ@ýß©vöß:>:ä+åvCBª£.o>Z/*,B_å~AO,rO+åÖZ£>rö¢Ð~ðuö_Ðä'), ('ur|<ZO/ðå<U>hÄðu*Zýðü_ÃÄÖ:ä~*äorO|üh*va<bvbo<BÜ_Az,~aUÃÃ_äÐãzã~aZbZªÖÜîbv_åÄ<@u©Ã*|A>ªOðäv¢<|OouÃbä.ßoßU.zZ>,ýra¢boýv|_Ää+Ð<o/@B+©a/©ãä@|z¢OZÄ|åbªä>aOöC@h_::zBýßOCÐüß+Üu£/üö+.oßã.~|AbOÐåî@Z.buu£,CªãîvUbv,ÖüOoÖ,£ªî@/ÜBðaBåã<ß~OÖZüZ|ýöhz<ÜÄ:ÖÃÐÜðÜ<*Äu¢a©ßß..¢:ß|rîr:ߣ©Üröa.>U.hb|bCäbb+ZîoCÐðäzðå_ß_*CCß~>vªªo~/v*b.©Äoßãhî>_AZbÃ>¢ÐªªÐ/ðzv|ßÖÄЪÄ<~ßðUO+ýÄOr£v_rrðC|äß©¢£<+/¢Ab:Oîß~ÄZÖU/+¢å_uZAÖ*ªã~OÐîßüo<åÜÖü£ÖAÐ:ü>ðOåh@rÜb.oz©v/UäýoðÜÖCZ+©ª©Ußr|~ÜãéÄAuÃAîÖZ~B>_,åA~_OÖßî@<ð|@vr¢Ðå/ÖªhöðUÖä,ýß|BCåðoýb~BîÜO~zh@£|ÃãrbßßÐb£Z:î/îÐðß:£+A¢ÃZzãßü,¢Buußzö+azbOB*Ühr<ä<©>ÄäZ@boîÖöüÜÃaOr©ªªß|ßC~oðvîoC+ü@ÐC.,özUß:v+B//*ªð_åUÃBÃ~ZC~ÜUÖ£~avöåÜãÐZ+ýC_Ö>Ö@özU~>Äã£:ßBßÐ<_Ä¢ÜBh<:ãbߪîÃühãß,bßö>bBZ:Z:öÖð|å:/ðü,ªA@>oÜîßhÃZýZ/££ªr|ÃßÄOýåzåAAu|uä/ßAz<zZr>Z¢oö<>îuär+Zªåä@ªãåäÜîCbC䣢*CåU<Z.|ãðä.Cß,*å~ßîoßä</*Ð.>BãªãZåÐzCßZ<zÃÃý>Öü_ßO|bÖ:|U.ãC~abÐBU|ãð£aÖÜ_/äCO>öªÜäÄðv|Bã*>ðZÃÐ<Uö~ÐððAåÜzoAäýîCªã:výuÖbýCUO*a©ªÄ©©b¢UB~@îÃßUAUB<@¢hî/üuvßãZhåÐB©|*r*ß>*ÐåÖB|öãöåhÄã,_ÃvÃ/ßß/ß/£o~hÃÄAÜ©aZ.AÃåÃzýå/aoîÐhäb_îýÃðð<CðüßhUã,bãBC©ªßÖ@ß_,.<väýã£@ä©z+<||öÄ>䣪¢Cb¢Ar:Ðh<å,|b©©CßZªz@,@УBbäbaöåÜÜ*ruü£OÜÄO/üð@îv~Ã|bvCÐ|î,B.åB<ö@Üvz<îã©.|ßrBÖЪh~>*.ã@©¢£*ª_ßî¢Ð><hu~ß©ãå©Ðz_'), (N''), (N'ZªC|©v¢Äß~Uh¢£o>ªvª,~Öß@@Oß*BOOöA_¢AªðßäªåaB~ÖABhbääbCÃ_Ü¢A>>vª¢,zBBahåÃ>ÐÜÃÖÐðÜhÄrb*zåðãbUýåZ,*v,ÄU£öbýoO,**ýßbÃv+Üb|Zb:OUöîåßO*:/,'), (null), (null), (N'råhð_~ãZOZ¢öªUÄb£ß:ÄCBv.raî~.bahohåÃhhð¢.©ÐªouÖOÄZ,äÃ>@BªÖÄ_©UåhZ>ß:,Að>åßZ<,ÃuýUÄåC©h:©£Üb.:.öoÜ~ZÃ/ZßÃ,îýärbÐð@Ðvö,Ö<hbCߪö_b>åhÃß.||üîrÖÜo~:~boåÄCýÜaBh¢z<rÐãä>ýb+ð_üoZbOaÄý<©u|ߣ*+å+©ÄUðU@Ä<îð©~,uC¢ð|ãö~a.oo£u©ðr@CBÄÃuZAðß*ÄCßzîZa/oÐÜ_öß©zbܪvA|Ä.|<©_î*å¢AªäåªäU*uUÖ<ÖªoðaðrUz@Zo/,Ü/£<@ßão>*ðÜÄu@vAßßu©özÐ@ýh¢z_ZÄ<uBãÃÜÐð£~BãaurýÖb>@*OÐßCðö@ÃräüArz>h©~vbåªbã<ÄvßoåvAß+v>vÐÜßrU/ÐhßßðÐãb<r:<ª£ü£r©Ð_zªðuãAýäöß<ã£o*Ä©ð+bzßßã+î©ãZB~h>ÐBhr~üîÐýh
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml], [c29_time], [c30_date], [c31_datetime2], [c32_datetimeoffset]) VALUES ((1824541628), (28), (32767), (-5982062), (0), (2.3), (-3.4E+38), (0.4893), (0.9114), (0.7207), (0.4408), ('£åîýÖö£büªü<oªb<ßå©vba©<ü+å+/_rA.Oa.<Ü¢v_/ZÐ.|z~ãÐðÜÜBä¢r:a.bv£/,ðbý~ÃýAv,Ö£Äöb/Az_Ī:vZz,OAÖruUÜå*<>*ýhÐî@.+uðU,ª,ÐÐößö©ÜÃr@üvbo>ä㪪ðÃ*.üÄöäöB<ð©oã>@ãb.ßЩߣܢ:Uå+B©ß©Ã.*üBaßߪÐ~zCu©üAÜrÜrA_Ürb>¢bÐ,vä>hbOäü,aîbbb:@u~î**:a:£ä|ÜA@oÜä+Z:¢b~ßoßßÜzü>ÄÖ~vbh,bãäb@r¢BðåährÃÖaåhýCO_¢uh©,äa:UC¢<z<~~~+obäöðOÜßüÖÃhbAr@r¢îããÜb>¢Ö@Ö,v/z~¢öB©©züî~åUÖCb~UßvöÃÖ_.ý,zO©a/Ã*,|:BCä_zððvåãÐ@Ãð>~a<¢ãB_Cv*hzîhrð,|ª>hðÖ£ÖßU_o©ß>Ð_ã©äÖÐ*|ýªOo¢AC©î+üB/+£vßåaãaö¢_©~+z|b¢ßUöh*|>hßhäUzã.ZOO.båÐ@_Aý£@A©ßCäÐhã>rzÄ*ÖrÃhÄzÃvZOChaÐBÖ/B+ðýB'), ('.~Ã~ßüåÄÐh@ß,*ÃöuÖ>ÄüäabbbBüß*£b+.zÐýÄ<ru:Zª~ðAÜÃüÖ*££Ü_|£>Öäðð,>/<ýAöü_vv<_~/>oA*vߪz:Ä¢ÜO+rÐ+z_îBh<bÐÐarb,oUühh*Ð_£BÜOýÖ+Uܪ*|ðoa©z*Ãüª|ß,ub|,ßAråaß©/hðoÄÄ>ü.å@:aUzãߣÖðBv,öðrý:Ð,:_B>~_,oývC~.@Ä¢_C>O.uvî~oÖüU@ÄAuA/ý+@ÃÜ:£©<ß_äåuZ©äö|üuvOð.ß/ð>|b*,bÐUA:ÐÐÜ~ßBbZäÐöãäbÃbrÄoªvýAÄOîÐO<ß@A£/ußr£>BåBðÃü£Äa£*åAB/oÐÄb.å,äßbuîr/äåã~ubÐOb+Ð_rÄ|hð>örv>BhUªÄaZä:b:ZoÖ>zßAÄýÃ*zäézÃhÖöýh+ÜÄz£+Ä'), (''), (N'Bî|ß©¢Ãð>ZßÜã.îbÄ¢ÐÃC:hßýßýo©aB>/©ÜÜB@a@bA>ä_aäðÐZýv<u|£ÜÖßå£_U>r**O£höOªu¢bövvüðb:,aßAOBCa+Ähä|Üa©r©ÃZª+ßÃu¢<Ã>>ãö~bå<.zob@Cª<:+bzö¢bzuÜäArCß|£/@äåOZ<î_vå@¢ß<Ö*uä~oÖå/@Äßuävv@ª:b¢Ðªvbª/.*Oߢý.vååðý>â:,<>UAUa+îOÄãAÐüßüÖ*|uÄBßãª.,~¢ü,ývuß~+,h*ßð/v|UhðhaÐ+bu©,Ã.:ä¢ÜvuzäÖ@Ou¢+Or.ÜÃ_Z+v<:ªuAîb|/îöðZÄA£rüÃ>¢Öî,+OäãîÄhCB~o*ÃaZöÄüÜ*Ã:å>+h<~ªä©Ä|räãAu©ÐÖßãÐ|Äür©Öߣü~ÄðZ,<Öu|@uð:Ü<h:î>zb~äªoö£ovðäbaÖü@ð|©Öî>rz¢ßBð@brãz*ðaä*h/ã~ö££oîÄßüuîuÐ/|,|ý+ãÄ©uÄAÜÃßü©ª.uðz||©:î,C|ßzª~ð,£z+ß~CðÐð¢.uîäz£>aßBaßå_::ªC..:OÜ:z*u¢£ß.'), (N'bbÃ>vUOߪÖß+ß/ã*h_ßz@Or:<_ü.å+aÄOOã<Üüzårªã:öb>ð.v@v¢@CäãuAÐZßðuÐCO£ª+|orîBð*Ü>.AAaªãÖbÃbü¢|ðªª/©ªÄãåäzbÄ*bÄ.O_bУÃUß*.ýA@|¢ÐauªzÃUÐb©@oÐöå>Ã,vå:|ãZî+£*rÐß,zÃzÄC<,ÄößabC_@ã:îz£u©OoOöÄüAð@*ähäA¢O,ra|ö£|Üo,ãßåz/oh£>o@oÖ/©aZ©rý©>rv_B£©Ä|¢/Ü*CuArðÃar_<©r<~îð+å|OÄ*ª¢Üz_<öö_B./Z:ýbÐ@ý:üЪz£bÜÜrÐä~¢Ü£//¢o_v~ö|ßAZ:öZoArU,åa<Ã>ÃoÖßußß_ß|£C+:O,ßb@ªÜzßð~ã,,,Ö.üðÃãCãhzýUÜ£.£A©ÜbaBüüBÐ,*ãu.:/hboÃOêb_£Ð@+ýÃ/v_oªZ,©:ýãü<ßýîî_ߢªuüãýoa<:U:ÐÐÄî~ÄUãCÜ,ÐÃ+Ähv_Ößü_,brZÃo:Zîur|BUÜå/O©ÃÃär@Z>vaÐðÃ/<O+¢ÄvaB.ãäo@hU<,.C|ovä@åÃarå:'), (N'_ÜbðîoOoo~ZãýAýoUߣ*ßCvO*ãÐaUßrüvî¢Öb*~urö,~ýa@ãÃäübßuh.>å~b/oî+,*|B.UBîu/CåÐÃrz*å*.äCobÖuUOÖ_ßbbAr£:/::Öbä,Bv©ß©vÄ_ã>>UO@*OýðoâbßÄ>~äð:î©ßUßö>|:@>ßUu||ü<öbU:ãåoÖA:üzB.ßBðßÃý.|ä£|.Ãå,ävo_CðãO<ãðBAðA~C/bahZÐåüb.u¢å/rZ,oOßßü>öð<ýÖî+¢ßb/üªäu~_Z|b_¢|~.Ðß©ÖäÜz<ªbußÖCbÄÜ.|<<ª/hª£_Uðö*+î~ABÃäöZB@aßýÖÜo>+ÜraBðC+_orub|£ÐåðoBüaî<v+üª£hãä+Ö|OC+ß©ðÐoÄÖbAö+bCã¢b_*äÖÖÖü@Ð,z*å*ý:ª@C@OuãOÄr*aU~aýUZrrz,¢bÃ.aß,.OÄüî<¢ÐCåz@ÃA_/öUo+zB~CÜCuîbßÜrbßzaîA~*ðbaBðv©Öv¢_z|ß|hb:ªîhßaZrz<ü<bßhoOZÖßbÄ:a/uzb,aÐCz/</©OhbÄî¢ß
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return $query;
|
|
|
|
}
|
|
|
|
|
|
|
|
function Repro()
|
|
|
|
{
|
|
|
|
StartTest("pdo_fetch_bindcolumn_fetchmode");
|
2017-05-02 21:00:53 +02:00
|
|
|
echo "\nStarting test...\n";
|
2017-02-24 23:11:29 +01:00
|
|
|
try
|
|
|
|
{
|
|
|
|
FetchMode_BoundMixed();
|
|
|
|
}
|
|
|
|
catch (Exception $e)
|
|
|
|
{
|
|
|
|
echo $e->getMessage();
|
|
|
|
}
|
|
|
|
echo "\nDone\n";
|
|
|
|
EndTest("pdo_fetch_bindcolumn_fetchmode");
|
|
|
|
}
|
|
|
|
|
|
|
|
Repro();
|
|
|
|
|
|
|
|
?>
|
|
|
|
--EXPECT--
|
|
|
|
|
2017-05-02 21:00:53 +02:00
|
|
|
Starting test...
|
2017-02-24 23:11:29 +01:00
|
|
|
Comparing data in row 1
|
|
|
|
Comparing data in row 2
|
|
|
|
|
|
|
|
Done
|
2017-05-02 21:00:53 +02:00
|
|
|
Test "pdo_fetch_bindcolumn_fetchmode" completed successfully.
|
2017-02-24 23:11:29 +01:00
|
|
|
|