2017-03-31 00:20:42 +02:00
|
|
|
|
--TEST--
|
2017-03-31 01:30:54 +02:00
|
|
|
|
Populate a test table with many fields and fetch them back using wrong data types
|
2017-03-31 00:20:42 +02:00
|
|
|
|
--FILE--
|
|
|
|
|
<?php
|
2017-10-04 23:22:56 +02:00
|
|
|
|
require_once('MsCommon.inc');
|
2017-03-31 00:20:42 +02:00
|
|
|
|
|
|
|
|
|
function PopulateTestTable($conn, $tableName)
|
|
|
|
|
{
|
2017-06-22 01:03:41 +02:00
|
|
|
|
$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_xml] xml, [c28_time] time, [c29_date] date, [c30_datetime2] datetime2, [c31_datetimeoffset] datetimeoffset)");
|
2017-03-31 00:20:42 +02:00
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
|
|
|
|
2017-06-22 01:03:41 +02:00
|
|
|
|
$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], [c27_xml], [c28_time], [c29_date], [c30_datetime2], [c31_datetimeoffset]) VALUES ((-568632370), (210), (null), (-283756280), (0), (0), (1), (null), (0.1356), (0.4940), (null), ('oz@v|~_åCAC@OBhÜßUÐÜBð~,Býh+Ä,öha_©hÜUOßüðaAîª<åA+ÃU.Ö<uÖCo~/oOÐBü>£/aa~bîßOð|>@_U**ÄÃÖvb/.£b¢,ßÖvððCß<A+CO>övzO£©AOããA/uu|aª+>:_a/£¢|.ÄßZýª@UzßBra/~röðU@Äîv:/a¢ÖööãÃ~bv*,_ä:ðüîÖî.+bä*b@.Cä>:+åüüÖz,ü/£öoUß.bߪÖuªª¢OUz£bîA_aväOr:+ubå@*|üãªobauhhv£:_zßU>УCbý~£ß:ÜU:Z*Bvbu.Ð<ýîß.åauÐÃh|ýªhäu<üUü+¢uüÃãð'), (''), ('_aÖÐz©C~.bÜ£Ä<ÄOuAªUoÖC+©ãÐAbÄ_uAo:~,hîßã©~väªvuhÐZhããußî.b>öB@Ä|_ª_aCßBCß.>Oã@b~@å*..,rð©Ãýb/äÖoåÐzýÐrAöraA/Ö¢bîað:uoZhh.¢*/ßAÄö©zZCObãZã.r,+ÜOb£Bb@.@a~~oªCäªhozbÜ/zðÄöbh,ÜBÜߣ/ZßÄýO|hzÐ|a<Ä:uvAbvýÖÖÄ.B:vhU>ß,ÄvÄUah¢ärb@Bª*+£,ßÄUZob_<h¢¢Öb*Ü.rv|ßOv,/Ã:¢îCåÄ:Öðh,ðÖ|roÜå_ýBhÖÐÄ.bßãO|zߪÄ:£+UîoýhO.<<Ð+£.,ä/~zåo/>©£ðÖªbChãÖ_/£¢ãCý|*uöz<rÜo<.a,|<öÜU_b,ª*+zåªBýÖuª<z*ßO|*OÄü/~ÄC<rb>å+zA¢öaä¢:äBß/uß|bu£Örð++/OÖ©r/,A>ååv/Ä,ß*ð'), (N'ТCå/vhäÐ*CböOü+ÃÖ£@ÖßýðåruörzbÖ@£uÐCåb__å¢~öüªî:|îê£Üð£OarAO£.U+|züUUßÃBýåO.ýîª*>£/.hääzbðåã>*urz~.ZößrzOÃ.a>büãb_ÜãßOoz>oßZãz£©AÐ*ßãhªr~oö~öoßÃuãÐohZBZAvCãað>å'), (N''), (N'Öoaðð~v©Uª+z,Cbý~<@ТAÜ~AÜr©©b@OOaðbãßU~a/b:îß:åä@Z~UUhÄ,/îo,¢ýObOh,OýhÜrðÐOý*ÃuzzßoÖðööåuÃ/îBr.:ä+УbÃä+_,z@öÐbÖ©äbßß/our@üZÐäBÐzÖCüüªu¢ößu|¢/ð@£ÃUUhª¢:r>:~Ð~£Ãvªrrªbßb¢:äarª¢ß~<£A¢ä~ÐCÃÖ<o£î+o|ZauÄî|îo¢ÄЪU¢uUßå£~ä+îBoÖb,Oã<AÃýÃa,böã:©¢<~ð|ý>_>ߢößö.ßýÜ/CÖ£BðBýuåÖðüö.ÃZ¢ªß@,ÃZüubbåbüuüîu*ðü,©ã~Ü¢Ü~ãÃ_B£ßuovA/:ÃåäbBhî_öbÐbÜzUðýö¢b_.,._Ü/oaߣOî>Z>ßß<¢ÐU¢ßö<*z|ZO*/,ðv><_zÐÐ_h/_oZAÖCr<ý*vܪ:b:C¢Ä¢zÜ@|aý*vhîýÐ>+/ZbZßoýä/b£@îA<åªCß@BÖ£ÐaÜßð*b+_vuaÖ,ãã_£:+<ð>BzßUZåîýUãzvA,b_+ÄBU©aÄ>ÜvZä©.Oß@©>hbÜ>£Zü*Bb|ßoªðýÖßU/ZbÜ_ª¢Cªv<@Ö+îî:~u<üÄ©¢/u>hUÐ./aUUObzUåao+b£|ß:vÃ</_*ZÄ£<*zB>åååA@@BÄãh**:ß*ªüä/Aå~výå©ö||ªüöß_Z>OªbZ*|ãzbrî@,A><åbªZ¢åhã||oUO.|î@ã/+ßhÄzÐöîÃÜ:o_B>bÐöýåZ<rÖß.ªhéýý_ªh©Ö+Z~©ü<bB,¢hÃ*ßü_üCîª,îðCßuAß<¢ðüßZ+£.u*ah£.Ü::*ãa<~>ub+:,:äÖ/Z¢ÖÄOäb<zCÖÜî:Ö@hÃ+îOÜab/ÖÜöîvü+ª~äA£bv~Z,Ä+ãÄz¢¢ðuÜ@ãU@¢Äv/BB|Ah,O*ªÄåb.ܪßb©rÐ/ozüArãÖ*'), ('åoߪO¢rzr,:>hÐ+£îz,~@vr+ýCoýb¢ßhÄß|©_>Ä>z©Ã+*OorÜß,©a£Aªü<¢b<uU~~Zß*OÄB/¢îvã~ãAßüürUuhCbßöÃbä©Ab/CßA,ßAbÄübC,OaC:ãb>aý*:OÖ|uaA|öåO/<bý.höh_vbýêð~£A~_b/Ü+ã£vßbÃ.BUOÜ|b:/ö|å<b+rböz:,_,*haÄÃhÜäoBääüÖ>ã,>Oª£ýOöÄý£~*>¢zåÐîbÖä,z©b,ߢr.:~CðöOðÖ+öbýÄ>O_©<_ýUä:b_Cåö|ª.*>ªrau|ÃC'), (null), (null), (0x67BA39352C997C2AD4F838AEB77E41F5F8BA5AE8ADC431BCC669BF7EDD2F017479C06C748AA6C6A278C4B7CCD7BD1C4B4EA8DF38F474E3A3897D6FC3DAFD4CA5F6C434F611CD6B52F4B770E90D64E4084D732F344FC87F04DCC9EA0C3702C87A7712D5138925398139D2DB82F326EEBFC5765BADC4C132E20F0845790C3CDF7DEC3E622658BBD317EB36FC496D8C242842352DE23C82E7260B537E35E28EF1CA11), (0x553BE86540AB8F786FDB0D8DE0F03AD4815EADB43A8BB79F3D89833474C163DCEF9B97816045BE2F68AED271618FAD41241C48B32E1832C9834828B6275B04AD78319D4559B8743CA07E4C8CB9463EADDC420F5778AFADD769CDFE171D07070CA924F830F168E86CA80C13AFCCA5103C0A7ADAE54CAD35C883C6DB8CB95D1E99773FE3954E0EBB7359A2AE6B9CFE0AC3BDC20CA22C21C0FBEF
|
2017-03-31 00:20:42 +02:00
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function FetchData($conn, $tableName, $phpType)
|
|
|
|
|
{
|
|
|
|
|
$stmt = sqlsrv_query($conn, "SELECT * FROM $tableName");
|
|
|
|
|
$result = sqlsrv_fetch($stmt);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if ($result) {
|
2017-03-31 00:20:42 +02:00
|
|
|
|
$numFields = sqlsrv_num_fields($stmt);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
for ($i = 0; $i < $numFields; $i++) {
|
2017-03-31 00:20:42 +02:00
|
|
|
|
$value = sqlsrv_get_field($stmt, $i, $phpType);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if ($value === false) {
|
2017-03-31 00:20:42 +02:00
|
|
|
|
echo "Failed in field $i\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
2017-04-03 21:28:57 +02:00
|
|
|
|
// RunTest
|
2017-03-31 00:20:42 +02:00
|
|
|
|
//
|
|
|
|
|
//--------------------------------------------------------------------
|
2017-04-03 21:28:57 +02:00
|
|
|
|
function RunTest()
|
2017-03-31 00:20:42 +02:00
|
|
|
|
{
|
2017-10-04 23:22:56 +02:00
|
|
|
|
startTest("sqlsrv_fetch_invalid_types");
|
|
|
|
|
try {
|
|
|
|
|
set_time_limit(0);
|
|
|
|
|
sqlsrv_configure('WarningsReturnAsErrors', 1);
|
|
|
|
|
|
2017-05-02 02:01:30 +02:00
|
|
|
|
echo "\nTest begins...\n";
|
2017-03-31 00:20:42 +02:00
|
|
|
|
|
|
|
|
|
// Connect
|
2017-10-04 23:22:56 +02:00
|
|
|
|
$conn = connect(array('CharacterSet'=>'UTF-8'));
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
fatalError("Could not connect.\n");
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-31 00:20:42 +02:00
|
|
|
|
$tableName = GetTempTableName();
|
|
|
|
|
PopulateTestTable($conn, $tableName);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
2017-03-31 00:20:42 +02:00
|
|
|
|
echo "Fetch all as integers...\n";
|
|
|
|
|
FetchData($conn, $tableName, SQLSRV_PHPTYPE_INT);
|
|
|
|
|
echo "Fetch all as floats...\n";
|
|
|
|
|
FetchData($conn, $tableName, SQLSRV_PHPTYPE_FLOAT);
|
|
|
|
|
echo "Fetch all as datetimes...\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
FetchData($conn, $tableName, SQLSRV_PHPTYPE_DATETIME);
|
|
|
|
|
|
|
|
|
|
sqlsrv_close($conn);
|
|
|
|
|
} catch (Exception $e) {
|
2017-03-31 00:20:42 +02:00
|
|
|
|
echo $e->getMessage();
|
|
|
|
|
}
|
|
|
|
|
echo "\nDone\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
endTest("sqlsrv_fetch_invalid_types");
|
2017-03-31 00:20:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-03 21:28:57 +02:00
|
|
|
|
RunTest();
|
2017-03-31 00:20:42 +02:00
|
|
|
|
|
|
|
|
|
?>
|
|
|
|
|
--EXPECT--
|
|
|
|
|
|
2017-05-02 02:01:30 +02:00
|
|
|
|
Test begins...
|
2017-03-31 00:20:42 +02:00
|
|
|
|
Fetch all as integers...
|
|
|
|
|
Failed in field 8
|
|
|
|
|
Failed in field 9
|
|
|
|
|
Failed in field 11
|
|
|
|
|
Failed in field 13
|
|
|
|
|
Failed in field 14
|
|
|
|
|
Failed in field 16
|
|
|
|
|
Failed in field 17
|
|
|
|
|
Failed in field 19
|
|
|
|
|
Failed in field 20
|
|
|
|
|
Failed in field 21
|
|
|
|
|
Failed in field 22
|
|
|
|
|
Failed in field 23
|
|
|
|
|
Failed in field 24
|
|
|
|
|
Failed in field 25
|
|
|
|
|
Failed in field 26
|
|
|
|
|
Failed in field 27
|
|
|
|
|
Failed in field 28
|
|
|
|
|
Failed in field 29
|
|
|
|
|
Failed in field 30
|
|
|
|
|
Fetch all as floats...
|
|
|
|
|
Failed in field 11
|
|
|
|
|
Failed in field 13
|
|
|
|
|
Failed in field 14
|
|
|
|
|
Failed in field 16
|
|
|
|
|
Failed in field 17
|
|
|
|
|
Failed in field 19
|
|
|
|
|
Failed in field 20
|
|
|
|
|
Failed in field 21
|
|
|
|
|
Failed in field 22
|
|
|
|
|
Failed in field 23
|
|
|
|
|
Failed in field 24
|
|
|
|
|
Failed in field 25
|
|
|
|
|
Failed in field 26
|
|
|
|
|
Failed in field 27
|
|
|
|
|
Failed in field 28
|
|
|
|
|
Failed in field 29
|
|
|
|
|
Failed in field 30
|
|
|
|
|
Fetch all as datetimes...
|
|
|
|
|
Failed in field 0
|
|
|
|
|
Failed in field 1
|
|
|
|
|
Failed in field 4
|
|
|
|
|
Failed in field 11
|
|
|
|
|
Failed in field 13
|
|
|
|
|
Failed in field 14
|
|
|
|
|
Failed in field 16
|
|
|
|
|
Failed in field 17
|
|
|
|
|
Failed in field 20
|
|
|
|
|
Failed in field 21
|
|
|
|
|
Failed in field 22
|
|
|
|
|
Failed in field 23
|
|
|
|
|
Failed in field 26
|
|
|
|
|
|
|
|
|
|
Done
|
2017-10-04 23:22:56 +02:00
|
|
|
|
Test "sqlsrv_fetch_invalid_types" completed successfully.
|