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

时间:2017-05-12 03:58:24

标签: php mysql

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

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

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

2 个答案:

答案 0 :(得分:0)

请尝试digraph stuff { rankdir=RL; c->b->a->b->c; } 功能:

LOCATE()

...如果测试结果肯定,你应该采取tadman的建议并保护你的查询。

答案 1 :(得分:0)

正如您所说, searchquery 字段可以包含 sku 的较小部分,然后您可以尝试以下查询来获取这些结果

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

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