php关联数组中的值字符串是否有限制?
我有一个查询,它将GROUP_CONCAT
的值作为数组元素的CSV返回。当我直接运行查询时,我看到返回的所有值。当我在PHP中打印数组时,字符串被截断。
不确定如何绕过它? 有什么想法吗?
更多信息: 我只是var_dump从查询得到的结果。这里是。 它显示1024.看起来有一个限制。它是什么?
array(5) {
["FIELD_ID"]=>
string(3) "232"
["answers"]=>
string(1024) "48,50,52,54,56,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,"
["ANSWER_TYPE"]=>
string(2) "SS"
["FIELD_TYPE"]=>
string(2) "DA"
["main_field_name"]=>
string(0) ""
}
更多信息:
即使将变量group_concat_max_len
设置为5000,问题仍然存在。还有其他想法吗? PDO的任何问题?
重新启动MySQL后,它可以运行。谢谢!
答案 0 :(得分:1)
您可能需要阅读max concat here的长度。
Command-Line Format --group_concat_max_len=# Option-File Format group_concat_max_len Option Sets Variable Yes, group_concat_max_len Variable Name group_concat_max_len Variable Scope Global, Session Dynamic Variable Yes -- Permitted Values Platform Bit Size 32 Type numeric Default 1024 Range 4 .. 4294967295 -- Permitted Values Platform Bit Size 64 Type numeric Default 1024 Range 4 .. 18446744073709547520
编辑:我发现返回给你的字符串长度是1024个很有趣 - 这恰好是mysql中的默认最大长度。 Coincedence?
答案 1 :(得分:1)
当您在mysql中使用GROUP_CONCAT
且默认长度限制为1024时,结果中的任何内容都会被切断。这也发生在我身上。
要确定这是否是问题,请尝试以下方法:
// echo string length to determine what your variable value length is
echo strlen($variable_here);
然后通过执行以下查询来检查mysql中的concat限制设置:
SHOW VARIABLES LIKE 'group_concat_max_len'
我在phpMyAdmin中运行它。如果您从strlen
和SHOW VARIABLES
查询获得相同的值,则需要更新my.conf文件或要求您的主机执行此操作。在WHM / cPanel中,它位于 /etc/my.conf 中,在该文件中,您需要具有以下内容:
[mysqld] #<-- Under that
group_concat_max_len=5120 #<-- add this
我选择5x1024使其成为5120而不必再次处理它。将conf文件保存回服务器后,您需要重新启动mysql服务。如果您正在使用WHM,则可以在主页»重新启动服务»下执行此操作 SQL Server(MySQL)
完成上述操作后,strlen
实际上回复了3519,价值不再被切断。
答案 2 :(得分:0)
你的问题有点难以回答,因为: 1.你提供的字符串实际大小信息非常少。 你问了几个问题(数组大小和字符串大小)。
您应该查看此question,然后向我们提供额外信息,例如您正在使用的php版本,以及@FLuffeh在评论中说的请向我们展示一些代码。