繁体   English   中英

如何从数据库中选择具有某个字符串一部分值的所有行?

[英]How do I select all rows from my database that have a value that is part of a certain string?

我有一个循环,产生一个像$sku = MAR-9-870-2-L的字符串。 我有一个数据库,它是一个“skusearchquery”列表,通常看起来像skusearchquery = MAR-9。 我正在尝试搜索数据库的所有行,其中包含字符串$ sku中包含的skusearchquery。

我知道下面的代码不起作用,因为MAR-9-870-20-L MAR-9-870因为MAR-9-870不包含更长的字符串,所以我想知道我怎么说:如果行值skusearchquery匹配字符串MAR-9-870-20-L ,则选择它。

$search = mysqli_query($connect, "SELECT * FROM skusearch WHERE skusearchquery LIKE '%$sku%'");

请尝试LOCATE()函数:

$search=mysqli_query($connect,"SELECT * FROM skusearch WHERE LOCATE(`skusearchquery`,'$sku'");

......如果这是积极的测试,你应该采取tadman的建议并保护你的查询。

正如你所说,你的searchquery字段可以有较小的sku部分,然后你可以尝试下面的查询来获得这些结果

$search = mysqli_query($connect, "SELECT * FROM skusearch WHERE skusearchquery LIKE '%$sku%'" or '$sku'  like  concat('%',skusearchquery,'%');

还要确保按照@tadman的建议保护您的查询免受sql注入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM