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

142 lines
19 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
--DESCRIPTION--
This test should not use temporary table as it might occasionally cause deadlocked transactions.
2017-02-24 23:11:29 +01:00
--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
class PdoTestClass
{
function __construct ()
{
echo "Constructor called with 0 arguments\n";
}
}
class PdoTestClass2
{
function __construct ($a1, $a2)
{
echo "Constructor called with 2 arguments\n";
}
}
function FetchInto_Query_Args()
{
2017-05-02 21:00:53 +02:00
include("MsSetup.inc");
2017-02-24 23:11:29 +01:00
set_time_limit(0);
$tableName = 'fetchinto_query_args';
2017-02-24 23:11:29 +01:00
2017-05-02 21:00:53 +02:00
$conn = new PDO( "sqlsrv:server=$server;database=$databaseName", $uid, $pwd);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
2017-02-24 23:11:29 +01:00
dropTable($conn, $tableName);
$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)");
2017-02-24 23:11:29 +01:00
$numRows = 0;
$query = GetQuery($tableName, ++$numRows);
$stmt = $conn->query($query);
unset($stmt);
2017-02-24 23:11:29 +01:00
$query = GetQuery($tableName, ++$numRows);
$stmt = $conn->query($query);
unset($stmt);
2017-02-24 23:11:29 +01:00
$sql = "SELECT * FROM $tableName ORDER BY c27_timestamp";
$obj1 = new PdoTestClass();
$stmt1 = $conn->query($sql, PDO::FETCH_INTO, $obj1);
$obj2 = new PdoTestClass2(1, 2);
$stmt2 = $conn->prepare($sql);
$result = $stmt2->execute();
$stmt2->setFetchMode(PDO::FETCH_INTO, $obj2);
VerifyResults($stmt1, $stmt2, $tableName);
dropTable($conn, $tableName);
2017-02-24 23:11:29 +01:00
unset($stmt1);
unset($stmt2);
unset($conn);
2017-02-24 23:11:29 +01:00
}
function VerifyResults($stmt1, $stmt2, $tableName)
{
2017-05-02 21:00:53 +02:00
include 'pdo_tools.inc';
2017-02-24 23:11:29 +01:00
$numFields = $stmt1->columnCount();
$i = 0;
while ($obj1 = $stmt1->fetch())
{
$obj2 = $stmt2->fetch();
echo "Comparing data in row " . ++$i . "\n";
$query = GetQuery($tableName, $i);
$dataArray = InsertDataToArray($stmt1, $query, $numFields, $i);
CheckObject($stmt1, $obj1, $i, $dataArray);
CheckObject($stmt2, $obj2, $i, $dataArray);
}
}
function CheckObject($stmt, $obj, $row, $dataArray)
{
$j = 0;
foreach ($obj as $value)
{
CompareData($stmt, $row, $j, $value, $dataArray[$j]);
$j++;
}
}
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 ((-218991553), (1), (23494), (1864173810), (0), (1), (-3.4E+38), (0.3607), (0.6259), (0.3426), (0.7608), ('bAB:+:|©ßÄ.<zýOaa@Ãr~ð>:B¢UBüÖÄýÃ<ß©ÖaÃbvßZö+/AZ:rzvbåvh_£+Ðr<Äbý.ßãr@výߣöÜ£|B©~ö©Ö/:ðßr©CB©öäßbuöö£rBðö*:/ö>>ý|ÄoUßö¢|>ý£_.O*åÜCÄ.ªha,ãÖßBý>äÐOC_üߪah¢.:©~~@Öý|£ßßb..ÃÜ.bC@|ýCî+v£,BOB|ßrÃ+ßvubC:äAöBÐCZarüaBã<|©uUC¢~.|~ýÃbý>£@Ca_Ð.îÖäÐo££.ªZ¢bU£CýðUå*vCoßý@©bAz£_ª.obüÄ¢öÖhüÄbaÖä_@rÖ£.hß~bУü~'), ('B:ä<bAr¢ö~Co<ÖüÜß|_BîårU,<ðüýüOÜ©bü~î.<<ýCÄßa£CZÜåoAäOÖrUªbªCU£ý,+>.ß.å.bbCÜO,UÖ+¢rBßoð>zÖzZzä+Ö<Ð:©oÐ@,ýÜößbüAä**U@b|Or:ýbAb~brÃ+Z:öªª£BãBauC.*Ä<öý¢äÄð_uro£>Z/ÄÐCЩ~ðÖТ.u:oýz~Ð*¢¢bªß©,ðÄ,:ý¢_ÃZ>ýéC_rva:>>+Uå~îo©ß£hZbZ©r,Z¢ßÃÖä>*îbrb/ß~,oå|:>äb<äî©+Ä¢,:zãü,©ßÖ>Ü|Ããöª+ß~ðî/CÖå/_*ßãrh£vÃÜÖªãOÄ+CbÃðOU@v_ãÜÜÐöz|ö_äzýîZ¢ð.hOãÜý,r_Z'), ('UZß_Z++ä_Ö:r©Z*,,uÖbýÜB*:Üä.~r©U>ýZ|@<ªövbä.Ö¢CÄAßobzaü>r>b_@öZ*bOÄ©aÜåî¢ßßðîÃ~ß©h+ÖA~ð>aß+a,b:zß_*|ð:ÄvðU:@rAª@îvä+ª_z>vr©r/å__+>h,+Aîu:Bßßh.ZýrãCCrbÐUuãvÄß>ãbÐîoÐîuoä+£î>Ä_+åð©a~Ö/zvÜåh@ÖO:öUÜbuU|BýÃUÖ~Ou_Ä<.ÜC>vZZ~åüab£BOOöUö:h¢+~Aî@©ÖB_+:b+.z<ý<Ü£,ªBîAh~.uüªU*Ü.|<+ߣãÜ/£¢ªÖÜä>U>Ã>UÜ>Cä+b+å|ÜrÄ~ýÜý¢ÃCߢO:Z:.ß_ÐÐB|ã_£b+@/|>åäå.åoÜB@£ß~ãªAß/üvßoã©©åb+Ä£CU~ZÐz|å|uA:rBZühåba_b:v©ÐauÐaB/,å@|ý.îv>ðäÖU,öÖ+ÃÐOZÃBAßZ¢azzo|h¢b*~ÖýÖüß_ªrÄAZÜvåAZðCÃÜ<ÖÄÜîüoÜzª¢zªo¢Äür@o@ãBv*ub:Cvu>,~BýZýbã+ßîB.üoBv*zĪ@v££//©îУA,hðAb¢/ýhÃßÃðaä,böoßü@ååz<+ä|/ð¢oäÄvAhA£î*~ðÄ~У|bªü|äbåUbЪv~/ÄÜo@bZª*öð_î¢ðüoÐÖÄZ@ãübzßãaü./,*îäo|b©+öÄ£AAü:öZîýä|vîåßBrv:ª,_@h|ÐbߢÃb**ßOðA+*îÄb.~ßbýý*:ä.ð+*C_î.Ðå>ZzÜuöBÄåbäð_åzhöz@Ðb<oß©/ý<b.hö¢AuÜBߪCåv<,a>,<aýª~îaßaC>Bßö££<öîz@©|AhÄ,ãßaßßOA@<bß|AªUr£ªÃßoU£ý:BOåß<ö:å@oüa*©ðÜ:o|©.äÄU:î:<îu~Oa+ÐahÄýh,Ã_:vOzðÜAÐbb*Au>£+|>ýüZªßýüöð£ÐO/vÄ*UüUª@Ãå@>BÃz>@>+/£oBÖî'), (N'üªrobã|ß*Ã@hrUãÐ.vöß©@ßz_uu,Ä_,Ã+hÜ*ö£uª£ä£Ãå<Ãvb:Ä<ö@o<Üå£ãªObßzãÜb<@ÜÖb+Oßäh:b_ö*vãîÐäüz|ba,ý<Üã,Aâß|Ãö/ª*+ª£:~z£äßü/BðCoöÄÖ©+ÄAAÖ.,îhߪå>h_ªÐð¢:b+¢üåöðÜ@£ªüOÖu¢*~åbO.>buböü,@:ABz~aBbhß<ª.@O¢ÃÐîîUoA|UÃä_Ðßaü,ýr~äuÖ:C~Büý.ãZßÖ|ðÜüý*_ªCrr.<b~Ö>å*¢Uaðßb>ß:©<U+ÃðÜ./ª£ªÜ©C|uÐBA,UðüüO>|aüî@|Bð£öä'), (N'ZO*åuÐãªî,~+,Üb.|v.>:u.:ÄhbÃÖ<ª+a|ÐOðAÐu+.|CÜa@BÃ<uBbßåOBÃhã/Ür*ßbå>@|oh|~ÜboavÃu,ðîÜ<©.Aä¢|rbuäOrZÐhA~CzB|<aãAB.<¢Aäz|+,>:©ð¢ð>+ðäöÄ||rßߪÃîO,Oã_hÖ:Oaå©ð+£~îOÃobCBýb,äð.ubÐä:OBUã.<OboðüZÜOî£î¢î_äbZrÖoZßAöüoß>O|zßåZ:<uÖÃZî_ã<.|býî<¢ü¢ß¢ZAäßUZbZ@/+vZ>åCÄߣððîåBhé|£ÄAoBÃo:,ö/ýßU*bAvß>A*îoüäÃ'), (N'©~¢@©ß.OO¢z:ÖÜ+£CÃ~ãbäîo_ZßäOUýÜv¢vä,Z~_©äBoO~ªhß*ÖaßzÃßÃ<ý+ý_ýö£_oC@@vßBAOrÖÐýöÄ©bä@ýöüð:oîzu_Cäo_£.<£Zbðîßh>bü<A©*>C:£ªrOb*+@å>b*ªr+_uaÖß~boß:.r/v|r¢ÐÐåbrv~üÃ/Azbh:ÖC>:zÐzä~/,Ö©Cðu*Z/¢åzZ*ö:ßChbäÐzö<zÜCåî/äz¢ß_ðãÖOÃA£_~/ßo>åöOÄ@~£/Щ¢<r._OaaÃ_/@ö+ü+ãBß+A>¢£aöuhßboBroCÐ>¢C*~/h£b,ýãÖhÖ|£+£hã~.~üäu£+zzßUuårü<ߢ*ý~£ü..£Zª<ã_üîîu_+<2B>
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 ((1), (1), (22772), (-9223372036854775808), (0), (1), (-2.3), (0.9047), (0.6343), (-922337203685477.5808), (-214748.3648), (null), ('ä|uÜC£r¢@Ü_@vC~bzCOBÖrö~ÖÜ/Ü~ýÐüðvbvªbÐ.özoÃÃå£rb:>åãvb©ª©A*u/b@A~ªýAz>u.Üo/AvåährÄC@äC£r/©ðb,O@U©£CZ£OÖöv>bC£¢zÜoraÄðaO:üߢ£|oaª£O,¢Ü~>AüOu,b@|ß+oåOoßz£<©*ä~C.B<><<UÃaªÄýÖÖßß.:ußZ.vã/ãäÖoBu¢:ãßCî~Ab|©hZ<Ob|ä£Uå£Öãýã¢b£¢>_ð+B_îü©îã.hv¢vý,UÜZî_ã+ýÄaßZv@.<bCuð,£oªOÐ/>>>rÐãUßäzªabaBãåo+£*ýÃu@Abýª¢ÃÄß/å@rßb:AÃ|h:ChðZßv/ãBb>ßvÄÃßUuu¢îu©h~¢bb:_Ü,îhÄß*väÃ*,ÄöC.©Ü:z@_î>ßÄOr*ð>/Av>zß©|:î+b_*Öå©üÃUãrCaU>.*aªhððOî+/<ߢau'), (' '), (N'oAß_U©Ã©uîvUã,z_ãÖ:C+/,<robU¢OÄäÖCUZObåvU_©:orüUÃÃo©Ä,aУ+zbª/Abr.>Ðha+ÜåOäãÖözýrã|ðaAo,C@£ßÖß©ß>¢uÖÐuC©*.ß_@oüÄbzåÜåBAOUBª¢+_ab@A+hÄ|vüÐ媢u£åö_öÜ:öîö,~b@¢£>zß,Ða<ßãý>Aîbý@/öªu£b/Ö~Cªb'), (N'£A£*u~ßU>¢.hÄöv.AäüäoCî.ý/îbߢ/,ãU*:.~ß.ÄO:ýã@+<>oBÐCC/_hU*ßÃÖ:åraz:ªßa<b~oýÃð~>b/~£@ÃvÐãßzhuaÄüÖ|ÜßOîä©o£Ã|ü:äuÃäÜUOß,_Öª¢ß@äubäOuChÖZh~î>åýÐÖ.üB<,u<ßöOUbªZboZ.£ÄÜrÐbð~¢Ãvz>_aãrã..äß..ZöåÃÃã@Ör>+aýruA|ߪÜ@£ÄÄbÜBuÜå_ãz+îßOUåßo_BaOaãaª,äbr¢å£UO¢ðÖvýzö@Ä¢Z:ãzðߪý_Ã@bðB£,A>¢Ã>U_a¢übî_ßb©ZuÄh|_C.aîC|©~ý££ªv:îAhAîßÃüÖÄ:Ö£äÜÄ,>ã>+uÃ~hý+bü.Uö@¢Üvb©UÐäo£Z:+ðßßZvhÜÜB©*|åð<£ý+:@UAb@¢ÐUC£Oª,Cßb|UÃhCOÐ@Cð_ÜzvrOväöCîÐZÃ_î£hîbü/Bãî.zu*z@@öªBöðã:a*@OÃOßöýªr_ª¢böBÃ<+ßäb@¢ª.ßĪªüßÄîÐ:U/©B:z¢Cßðåå£ýv:>¢hva|bÜAU.aUÐîÐ*>äUßU,|'), (null), ('Ã@îbªz@zbÖ::Ä+åbOî¢åbao|oha£UU~ã£Ä,vCrßÃÐ.ãüåbhîîoO£ß>ÜÃ**å:zäbãOªßýý¢öýBðh©OrÃCýBÐbböAhöÃößz++å*aßvuoðZur|î*B>h©Ü<uCaÜu~©AZÃoÃÖ|v*O/.åßO:äã.CßäOßh_îhÖzu|Ã|h¢¢b_ß*bÖzÄUå£AÃoðã<åoBåAhä._aüäÐzÃ|ßßzªÜÐBåBå©UBboZÐuÃý_ÖA,öð|Ö+ã_|ü>ä+ªuÃobuÜh>ªZ<ã©h>£ÃabÖö£äo+_U*Bv¢rßÃ>|@ðzüåî+¢bîÄÃAîv>ܪ©ªãýÄÄ_ß.zÃUAü©öhÜÄCåbZuB:ß|zOah/OAîÄ@rª/b@AöãäÐABÜ>ܩТZªîvåü>rz|ãäöÖu¢~BÃß_vZv~B_u/@+Ü<.ªB¢ðÐ<ªZÄ,ýaßvähî©üöbAz£Äß:vßßrb,_oCa©,urU|îv|ZU,vªÄß_z|ßüuöAz@îOö£UCÐhUZÖÐã<.,h>Oî_r@Uäuª*A::råÖ©Ð*ðAh£h*.bß>B,ªb:ã/üéÃÜA@,Bßä|ãbß©bu<bU,'), (null), (0x9D446CDF0AF13907949CA9F85B4466D692845EA5B9BD585DA5BB591F3E0217DE), (0x90A31B0877CE46FC4A6269737DE0C578EB06F79221E0EC0F394E9819C99285CA2BCDB4C2BA890D8F5FBD73F5F4323E795AC51711E73A6CAFB70CCE28362C33B8DD9F48AF2B02BE61F96733636DF61B070F1EBF047A73E3F060040AAEBAE458328ABA1754E98F4D5707B5187F070942C1F0C719186D2E3D69BB574E27F70FA7150E00D9B2DEC61D80D067FDC55B64E957C149BDF3CA40C55B7DAD999240265FF70D0370063090E22AA998470531770E576EF765AE51B34ACE3B7D34312C8B40AA0805B758F3E2273167934A32F9BF29069F412349C1B1A659B8A1CBB25CB0FD1D589DFD2CBFB6638CCF3346BE6918D57B532E91EB68F6E8565F5D9F521675D5B6952CD95BC1FD46E9DE967A8D6BE7F0A0CC4F5E2D1F12B561B4A7CD611611755A5E8F293D3E79B956E7A80CD17C5AEB786DFE85C716A797827777A61A2FE4D2CD21202FDBBDB262529507467605E3E559BC55F4178BAE43B6F7A6C6C6D29F2702D53FB05C2B0FBABA9C33310E61217C93924D5EDAF0BB4173DC78E416EC9B7FF6E043A0C633882EAC9A397A587C3455D62A323485404C121AFE3D7FB22BA3CD01B33A2E1D80B65F091EB13FB740E9F6A8230DECBA67F9B6943185C8F6087C81F76B79A44106375573D22A678E0C5ADA1446D78E1DB6139AB9849AECFAEE6901A230474BC744B4A2ECB778E73C922787D6ABB3AF31ED6
break;
default:
break;
}
return $query;
}
function Repro()
{
StartTest("pdo_fetch_fetchinto_query_args");
2017-05-02 21:00:53 +02:00
echo "\nStarting test...\n";
2017-02-24 23:11:29 +01:00
try
{
FetchInto_Query_Args();
}
catch (Exception $e)
{
echo $e->getMessage();
}
echo "\nDone\n";
EndTest("pdo_fetch_fetchinto_query_args");
}
Repro();
?>
--EXPECT--
2017-05-02 21:00:53 +02:00
Starting test...
2017-02-24 23:11:29 +01:00
Constructor called with 0 arguments
Constructor called with 2 arguments
Comparing data in row 1
Comparing data in row 2
Done
2017-05-02 21:00:53 +02:00
Test "pdo_fetch_fetchinto_query_args" completed successfully.
2017-02-24 23:11:29 +01:00