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

129 lines
9.7 KiB
Plaintext
Raw Normal View History

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
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);
if ($result) {
2017-03-31 00:20:42 +02:00
$numFields = sqlsrv_num_fields($stmt);
for ($i = 0; $i < $numFields; $i++) {
2017-03-31 00:20:42 +02:00
$value = sqlsrv_get_field($stmt, $i, $phpType);
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
{
startTest("sqlsrv_fetch_invalid_types");
try {
set_time_limit(0);
sqlsrv_configure('WarningsReturnAsErrors', 1);
echo "\nTest begins...\n";
2017-03-31 00:20:42 +02:00
// Connect
$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-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";
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";
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--

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
Test "sqlsrv_fetch_invalid_types" completed successfully.