[英]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.