Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MySQL中使用LIKE?_Php_Mysql - Fatal编程技术网

Php 如何在MySQL中使用LIKE?

Php 如何在MySQL中使用LIKE?,php,mysql,Php,Mysql,我有一张名为music的桌子,上面有一些ID: 6983887641 59088763306 116542622632 106436032725763 6750402929 131572223581891 17337462361 56848544614 108089415891178 27659711968 182011613865 8888384363 43780515976 7872609449 38858586087 107901192572009 9028468518 54619473

我有一张名为music的桌子,上面有一些ID:

 6983887641 59088763306 116542622632 106436032725763 6750402929 131572223581891 17337462361 56848544614 108089415891178 27659711968 182011613865 8888384363 43780515976 7872609449 38858586087 107901192572009 9028468518 5461947317 11955325695 64075031411 12673567174
我需要对这些ID进行查询。如果执行了类似的查询:

SELECT username FROM music WHERE music LIKE '%107901192572009 9028468518%'
它将返回在其音乐表中具有这些ID的用户的用户名。好啊但问题是,如果我以不同的顺序添加ID,就不会有结果。因此,如果我搜索:

56848544614 107901192572009 or 5461947317 9028468518
它们在表中,但不在顺序中,并且没有结果。我该怎么办

SELECT username FROM music
WHERE music LIKE '%107901192572009%'
  AND music LIKE '%9028468518%'
请注意,这将是缓慢的。还请注意,它可能会失火,因为
id
可能是另一个
id
的一部分。有一种更好的方法可以做到这一点——查找1-to-n关系。如果不是,至少要考虑这样做(以对抗第二个问题):


我想你不想要你想要的

 SELECT username FROM music WHERE music IN (6983887641, 59088763306, 116542622632, 106436032725763);

IN是否会查找精确匹配?@Erin-是的,将是精确匹配。@Amadan-我猜测它是一个单独的唯一列。@AdrianCornish:应该是,但不是。另外,您的查询要求用户名包含任何列出的音乐,而OP要求用户名包含所有列出的音乐。:[filler,因为我只是想要笑脸]好的,第一个解决方案成功了。而且一点也不慢。但我还没有尝试过同时进行大量访问的搜索,所以让我们看看。为了解决失火问题,我在表中每个id的开始和结束处添加了一个“.”(点),因此搜索应该是:WHERE music,比如“%.107901192572009.%”。谢谢你的帮助!如果我是你,我宁愿简单地创建一个新表-每行一个音乐id。通过拆分字符串移动所有现有数据,然后转储旧表。为了兼容性,您可以使新表和旧表彼此相似-事实上,它们可以看起来完全相同,只是音乐id更短,使用方式更合适。对于关系数据库来说,这根本不是正确的设计。
 SELECT username FROM music WHERE music IN (6983887641, 59088763306, 116542622632, 106436032725763);