php-sqlsrv/test/functional/pdo_sqlsrv/pdo_fetch_bindcolumn_fetchmode.phpt

130 lines
23 KiB
Plaintext
Raw Normal View History

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