Php my sql in()函数或FIND_in_SET函数中允许的最大逗号分隔字符串

Php my sql in()函数或FIND_in_SET函数中允许的最大逗号分隔字符串,php,mysql,mysqli,Php,Mysql,Mysqli,我一直在做一个项目,在这个项目中,我必须找到数据库表中存在的手机号码。用户应该上传一个手机号码列表,该列表可以覆盖数千个手机号码。所以我主要关心的是,在sql的FIND_in_SET()函数中,移动电话号码的逗号分隔字符串允许使用多长时间 实际上,我不想存储这些数字,我只想找到表中是否存在上传列表中的任何数字。所以我的查询如下: WHERE number IN (num1, num2, ..., numN) 从移动设备所在的表中选择*(“上传的逗号数字字符串”) 或 SELECT*FROM t

我一直在做一个项目,在这个项目中,我必须找到数据库表中存在的手机号码。用户应该上传一个手机号码列表,该列表可以覆盖数千个手机号码。所以我主要关心的是,在sql的FIND_in_SET()函数中,移动电话号码的逗号分隔字符串允许使用多长时间

实际上,我不想存储这些数字,我只想找到表中是否存在上传列表中的任何数字。所以我的查询如下:

WHERE number IN (num1, num2, ..., numN)
从移动设备所在的表中选择*(“上传的逗号数字字符串”)


SELECT*FROM table WHERE FIND_IN_SET(移动,'uploaded comma saperated string of numbers')
我想说,这里的解决方法是根本不使用
FIND_IN_SET
,而是使用类似的东西:

WHERE number IN (num1, num2, ..., numN)

换句话说,通过对照用户输入列表搜索每条记录的电话号码来表达您的查询。在子句中,可以出现在
中的术语数量仅受
max\u allowed\u数据包
的限制,在正常情况下,您可能不会超过此限制。

我建议不要将手机号码以逗号分隔插入,而是将其作为单个手机号码插入单行。如果您这样做,那么执行搜索和删除操作将非常容易


只需上传以逗号分隔的手机号码列表,然后使用
insert_bacth()
函数插入即可。

FIND_IN_SET
即可。但如果您有数千个手机号码,则不应以逗号分隔的形式存储这些号码。最好使用临时表,并与主表一起检查,最大值为1000alowed@Gaj你有这方面的文件证明吗?在mysql中,它基于甲骨文its中的max_-allowed_pocket,这可能不是一个问题1000@Gaj这个问题用MySQL标记得很清楚。你为什么要让甲骨文加入讨论?