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

134 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');
2017-02-24 06:40:51 +01:00
class TestClass2
{
public function __construct($a1, $a2)
2017-02-24 06:40:51 +01:00
{
echo "Constructor called with 2 arguments\n";
}
}
class TestClass3
{
public function __construct($a1, $a2, $a3)
2017-02-24 06:40:51 +01:00
{
echo "Constructor called with 3 arguments\n";
}
}
function FetchObject_ClassArgs()
{
include 'tools.inc';
set_time_limit(0);
sqlsrv_configure('WarningsReturnAsErrors', 1);
2017-02-24 06:40:51 +01:00
// Connect
$conn = Connect(array("CharacterSet"=>"UTF-8"));
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_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)");
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
$stmt = sqlsrv_prepare($conn, "SELECT * FROM $tableName ORDER BY c27_timestamp");
2017-02-24 06:40:51 +01:00
sqlsrv_execute($stmt);
2017-02-24 06:40:51 +01:00
$metadata = sqlsrv_field_metadata($stmt);
$numFields = count($metadata);
$i = 0;
while ($obj = sqlsrv_fetch_object($stmt, "TestClass3", array(1, 2, 3))) {
2017-02-24 06:40:51 +01:00
echo "Comparing data in row " . ++$i . "\n";
$query = GetQuery($tableName, $i);
$dataArray = InsertDataToArray($query, $metadata, $i);
$values = (array) $obj;
for ($j = 0; $j < $numFields; $j++) {
2017-02-24 06:40:51 +01:00
$colName = $metadata[$j]['Name'];
$value = $values[$colName];
CompareData($metadata, $i, $j, $value, $dataArray[$j], false, true);
2017-02-24 06:40:51 +01:00
}
}
$noActualRows = $i;
2017-02-24 06:40:51 +01:00
$i = 0;
sqlsrv_execute($stmt);
while ($obj = sqlsrv_fetch_object($stmt, "TestClass2", array(1, 2))) {
2017-02-24 06:40:51 +01:00
echo "Comparing data in row " . ++$i . "\n";
$query = GetQuery($tableName, $i);
$dataArray = InsertDataToArray($query, $metadata, $i);
$values = (array) $obj;
for ($j = 0; $j < $numFields; $j++) {
2017-02-24 06:40:51 +01:00
$colName = $metadata[$j]['Name'];
$value = $values[$colName];
CompareData($metadata, $i, $j, $value, $dataArray[$j], false, true);
2017-02-24 06:40:51 +01:00
}
}
$noActualRows = $i;
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
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_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 ((-596308883), (0), (1), (-856437494), (1), (0), (1), (0.2409), (0.4671), (1), (0.1303), (null), ('zöhUa</~î<îC+OªÄbö~/oÄ©å_å£üb©ãÄÄaöA<zÃðÃßo>rCßZOÖ_O@+Ö¢ZvÐCã<_u£O/*U~uÜv©Ð,_oÃ/B+ßzC£O*UzÐrª|buvðäaÃ:bª@Üðä¢,BhªzA>©uCýýbBðäAoÄ~@BªZ©Ð£zOß*Ð*ÄäuªªZ@ª|bßåaª+CÖ>ªuvCZ>ãð~.O>/ÜU©,uÃU/åOýöbÜ.©CvO/zÖ@bª~ÖÖÃÄC/b£b¢*uh:@bÐAZOUÄ/U<CýbBA֢ܣð>Ðob|ä.ÐÜzåhÐðva<Ö.*A*/Ua/a|aåÐ:>@az~üÖzãý©ð~üvhãAvä+zîozîbCãäÄîª/©rîö/@aB>b©>ÃAoåÄýªåBO¢äaÃî¢<üvÖ*hzbuåªÜävßä>ßrAüöhÐZÐ*>ªböÖ¢,¢_Üðo|ÐB©ã.ãAß,Ö+r<å©_ã|:¢ßã:oöãh<©ZB~©©ZäZzz<Ä_CäÃÐZÐÐBÃu<_Öå©>å|Ã|ob©ß_ß~ßU@uýðvЪ>r_/Ð~ªäCCî.rß/ÜÜh+ArîO>höãOa<¢>obaÃavߪ>ß©/îOª:B<uÜîÄ,~abvßÐ.ä£>.'), ('ÖÖ@zÜ_.uܪü*,B_uäª<Ã:©üýAäböaö>ö<Ã*ÐÐ<Coý*U:z:*zz/£ßÜ:zBÜ@Zî:<rßBAåÄÖß@,<ZÄB/@Ã~_Ü¢ªZ©oa+UöuouÐ@C/*v~£~@ðU+>Ör©UßÄ,Ãä¢@:åä*@äZuu~OýýO/ýîrCÃbzÃUh~Ä.:ãb©@îî.ÄZb£¢ACð~uÃb.Ð>>Ðð<CO¢OðoåÜ,@@>bvavªh>bAOÜÃðî¢ýÐ+~ð~:ÜrBCh<ÖUÐ.bÖªß,:å+Ur:Ö@å:ÐvöOoîör.bA,ªö/ãvv£hÐîho,:.>Ö*~/üüª,COh,îÜî~~~<ß.©OÜåÐÄßCßßÐ>:<b>ª/£*AÐbCUUüý|~ßý¢BBhß|uvßU*,/å:zãBýhß:+ðB£¢>Öß~rýÖå*+ðÃAr,|ß.ÄÄ+ß©o<~©ooÐoAoðÖ@ü©C,ÃýCöî.öö:î|@.ðvÃB©C¢*~ТOî@C:äªCZza+ÃÄvb£ÄÄUo£¢U©b/z|>bCv@Öýîã@ªz:uBîîý,,bý¢ä<:|'), (N' '), (N'Z|ßUîBOüvoßrCöÐ/_*ÜbAð@>:UßbrТ,Coaå/ãaßß/Bår.Ö@ÄCÐöÃz,+Azß©ZCÜ||/BööãýÄzüv¢ß£ZA@Z+býÃÃßÜ©ãCa*>©£_zÜzß~ähA¢ÄAÜ_.aßoaÜÃ~åÐZoZaäÃý<ªüZz@ÐÄÄ>ööbýÜaC:CuO>îüö:ba¢Zäv+£u/ßUb>b:ZZÖ£ßÖ@oo|Ð<ßýÄa*ä<ÄB/¢©ª/Ö+uä+£hÖr¢rz£z@<CZ_åãUÄÜ'), (N',*ä©Bb,ýoðZOBzbßBßAuhO£ZzCÄ~>£:öoªÜ.*öCUUz*_ßC:~ß<¢üåýåOÄ|*ü+ß@_<*A>_£:hÃÜüßäB>rÃCßAa>boЪÃÜ¢hî:ßßb<böAha<v'), ('z¢bCZua<@ýZåÜöü©@_ä_ýbAahÖB£a_röo'), (N'Ä@äÃ/+ZbOrobO*öÐU>bv~bý|C,:üÜ*ÐCÃîüaÃOB£Öüßö~a<©ª>éªa@¢_z|bîzzä>b.Z,öbb,/@ªvAüBðÜ,Z£b@©.*>,¢bÖ:©ö<@¢oZ£/£Zo>î+>*:hCöAr:_ÐîA:Ã/*Ãböz~<>Ö>ÐäaÜ+O>ýaAOî¢>¢ÖAüåvvrÖrö>/öbîåü,£rorÃO|.A/£U/b~z~|>ª>r@BßßäÖ|ðBor_üZ:_+ß*äuÜCö@:ä¢>+,,î:Ãb.ä*ßäB*<bîbväArÄU¢üÖýåz/îð:Ößã£_ª,h><_aC:£å¢+~Ö:hÃCv<öB_|'), (0xD35A6A86054875A44046409962581502342C6344FD8635EC1395F8357448F3F191003B3130746C9B9EC07B4C32D764F9AA94050A90AB2A4D257D736F4F4030F8534E07621DE4D1BFC0C8A53C0AE8BA3B31FE8AE042E961E5D6ED0BB201FD4B5E9083F9E3CF02DCC6C3464AC806EE423DC3373E51B64FB56AED218C30D81EBDC37C46AB87EFD66B2E22C41CFC9E98DFE7AACEEFC9BEFAA840CD8FF5AD76ABEDA488874BBF42BB4EEDCB0F2EF133B9CB5542A485092FF404829E6ABA60E0BEB876D67873174C1FA5EF8001FDAFCBB60D13C3A06AD226E3759382C821D800ED0C0D56B81BBA45B30823FE96892DF654B7E85CA69C3F53E650F203DF9484FECDEE92F5EF59139A52CE109847D3905A479C2E11387B5951CDBA706728B7651E842431A7F63807FBA34D0AD88CA60B13C098BB426672C55194412735E9AB729A68F11422A1E8630E95336DEB7181C526AE5CA790FC23B8115FDF12B510D112F8DB6F709A92E971D734ACAD3304DAE0137B01868C03E19E453903C3C1D6AEFEC421751001112B93C5EBD05C4F75840C85FEFF3A0E4A85F4FAD02B608F26AF0185AEE9128FCADE02506DC1A033844ECFB4F63EC3D774EF799B801631E5CA049F3BCED6A08C727DBA20FCE9A189E4C075815BAC98E8EC2A11BF6F760EB4AD1C8668226465ADAD42417883A3DA8A4EEFB6BFA0AF8A1D6BB64FA4C5E11CFC6F0672E0633866), (0xC7D3196A20644950877180BF4E13FE9268FD6B15C1E8CC2545097C30F92715883664D8DB70B34B5106533E6F9C3C20F3744EFA3AFB6A9ADF07F42517E8185
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 ((2147483647), (6), (13193), (499351064), (0), (0), (1), (0.1990), (null), (null), (0.9601), ('üo.hý~BZ~|.b+OäÐbäv©,~<ßAöªB*ßuC~oÐözB@ÐUö+Äz©BAu>£BßßÖ,Ã~BAýýüÜ'), ('r:î.ý*_//uÜ@,ä~åãoCzÜ/+vÐý>ÖUý~+Aoî~zb£Üv+*oîbÄO.Ch¢rüÐÜB£ÃýäÜO:£/>rüý|Ö@*b.bO+©ZZ+Cäühb:C>Ã.£î>Oî_>ª@r.~,BåðzÄîvaÄ|/b~Ãv/Öä@ä+å:|uO©åbÜBö|<ävCh/ª/,ð+bhzäuoÖ+îÄau:+B@u,üö<>>Cßýz¢:ð:üöB@båß©îaÐbã:£ãÖbî+A/ýå~©rAuähðývbv+äa£/ÐbðÖ:£©Oh||_|.|örð/©Ü:Aåßb~.+>å'), ('z*bhha|äbZ~,/ä>*hðªü£ZAAö,bUß©©_v£Bräbß.Cð+Öz/£Äða+ü/zvAzbOÖözA/¢ACßÜv<bhrãÐðvÐ@Ö+zßzÄBö+bîßåA:ßåöCvZãö£|Zãu<|BAz©aªýuBðöo:Ä,£oBÜaäýo<uî/ÃUaåå>ßüä@raäã©ãr*h.uvîCÐ::ÄCåä:COZýBAbãÖ@höbðOOhöhB>O/*îh/ABãý£Üî©_©ÖOv:Ü>ÖÜo©_v@üöÐ+£aå£O_î_>OOU©_.Üä£Ðé~Ð<åܪäbð.v©£A|v©ßUªuvý>Z¢ý~oäÐîzrb</ÐåðA>~ßðªa>ã>Oã<B:ZÖýªo¢ZåbÃ+*/üBãöðz|ÐÃO~Ī>Öéî:uÖÜÄ:CÐZÖª@B|U~_УUîh_Ī|/î|h_r.ÜðC©O,.ßrAßhOba<AöaA.ýZÃbooAuOor.C*£Cî*+U:ÄCÐ~/<./@O@oýߢ:¢Ar,~aåªÐbÖ,+h¢£ßüZoü<ÖâߩüÄUC_aÃvzhääÃUCã*ÄAb,~ä+a><<oZ_ÜÜ+îî>ör+©äZ@öB¢ðã¢.ü~ÐZ.ãåBb|rCA¢BB**u+.>©._v+/ðå_¢_î|Obb@bªãoß<ÖvåãaZª¢va<ðzÜC<:OOA~~CbðbvãhÖ|*äößý<ªð~öavîbvÐZ,ªo©ýÜîohßðöaÖ<@:hb,ýCýävªB|zuý©zü<_ªå+bA¢ä©©ü|O_Ö:ðr+zU¢Zß,oßz*¢ãuvª//îða+__ãüU/ÐC¢aUß/vCöÐßoa¢r@ZruU<ý:Ð~>¢ö/Ðð|ö/ÃÃz,Aßý><ÃbÜýÐ*a_ÜAOvhov©zß*ÄußUr~ö@Oðo:Uý_Ü©ß>åª.rh_Öo_@AÄÄý£Üuäã|.ßß㪢ªöZ¢.¢äãðÖzA©Ð:/.ýhu::ªrZîßvbBÜ|ª_ðßåðC/äåbî<rrBBý,ãÃ,oh*bz>ߪÖßýÖ/hߣ|<äÐ,~,ÄÖbÄÐoBÄöär+ß>ߢ£¢UCUðÄÜbZ</ðüüa~Ö¢zuÜb/©CAårÜaoÖäuCC:hßbz£:Ä©ßüîrÜbä<,ä_ã<håß|ZZZÃbÖãîCªãvðh£Ðýzbýaýüzv>+~výaîuÖ+h.ýÐubz£:ar:ÐîC>ßßã|zzý.~,v¢hªðAoÜ>za~ãðÃ*_ZbA£©o@OB.rAã/~oäßÃ@ãbovö/ß>uüðäüßÄ*_Öª:£/ã£üЩî//ýCýßÃrðÖÃU+aöC>*bAÄU£CO'), (N''), (N' '), (N'ÜîbßýßähC>/Üb+b¢<Äo¢©¢OOÜäöÖövü.:<<<ühhÃ>ððuãåbßoUü_+Ã_hÄåbCäBrä_a*ªî¢©*~<hÖÄü*îßCªÄZ/bÖðzÖbBaã,ÐbÃß_<ð_ª£üå|ß/Ö_hzÖ@>|Bü~©~å~U~£ÜA£v@++ObB©:orhîa_öÃbäu_~äüß+©a..uÜÖß<AÜü|:,å©ß,_ÃäbZå|îßCã.~ß.Bvbö/.C_@oÐ@.ã£ðb~UÃßüB@©åð©ß,,.ÐbZªªãüC~*|hoA>ý<Ö~ßzhªhO_v_<:ÖhÜzÜ+_b*U¢hC</ü+¢,öOAß~Bª:o.b~/©C~/+ãvh://*OOAhÄro£o_UÐzruOî,£U©r<ýåaª_+U@ܪ>,ð~z:OîðUCääBoªbubÜO©üÄAUÄ¢£vîA>Cãßz¢ªð:*Ðö+hAð:ðZA:ý/ß/u_bÐ~v©+B+ÖU*Z:£h*ãðA*îußoÄýåª>ÃA.BB@OäbbªUÜZ©C£ã,Z©ªå,å£ãö/|Ã<@äbröO+Cö<Üä/BCöCAbh>ZãBhau:ÃU/@.CÖîU<o:<v+rãAüÜ@îß,>_ýuAöböüð:ÃAU<Z+uĩ䢩uð¢vCA:öÜ:Aaäh@äZ,u>|ã©o~~©/vrh@åäÖZ.Ãüî_üÃUýUªoã+.v£hC.U<Ã_,a©|Z@Ca,r:ª/*ü~h/o*ü@~ðßååÖÖ+böa/@@zCö>CªÜ£îßãZO_UãZ*~ä/ÖÖ.¢,UAo@ªaã:vA<Ãu,ÖöaaAª~rCu£©ä£b~,_äÐ*Ð<.Oã:Ðvu+¢COC<ÐÐ,AßbîöåöoO+Ä£ðã>ba>¢ãrhãöîäA_©_¢ã©oßðvã_@u©v,|~/Ü£hBýBîOåüBabã/@©ÖäýÜa|ÜOüBª_å<,*:Uå@/¢ÐÖýöüoã:©ßoª¢Äª£ÜB,ðAaZ£a>Ðâª_ýUhCußb~ª+@/ß+vä©Ðß<ßC@ªÐ:*ð>:oãbvO+>'), ('Ä@ß|_~@ZУböãCÖäÐ_,Ü:hBhrÃ+_Oî+b+ðÜv*öboöbrä.raö@z¢örª/~/©+ärýCãvüªî+>_ß>rã.öuÖý©/aäv.äÖ@O㩪rüöð+~/¢C~AÜã<aÜa£Oî+OßüU|åBã,O£ärvUå<~©*,|ãýb:öäü@|£ÜUAoýÃßÃzßÐ..ð£OÖî|b@~<7E>
break;
default:
break;
}
return $query;
}
function RunTest()
2017-02-24 06:40:51 +01:00
{
startTest("sqlsrv_fetch_object_class");
echo "\nTest begins...\n";
try {
2017-02-24 06:40:51 +01:00
FetchObject_ClassArgs();
} catch (Exception $e) {
2017-02-24 06:40:51 +01:00
echo $e->getMessage();
}
echo "\nDone\n";
endTest("sqlsrv_fetch_object_class");
2017-02-24 06:40:51 +01:00
}
RunTest();
2017-02-24 06:40:51 +01:00
?>
--EXPECT--

Test begins...
2017-02-24 06:40:51 +01:00
Constructor called with 3 arguments
Comparing data in row 1
Constructor called with 3 arguments
Comparing data in row 2
Constructor called with 2 arguments
Comparing data in row 1
Constructor called with 2 arguments
Comparing data in row 2
Done
Test "sqlsrv_fetch_object_class" completed successfully.