MySQL-产品名称,其中名称包含特定单词

时间:2019-01-13 09:27:05

标签: php mysql

我有一个MySQL表products(id, name, sku) 而且我有一个字符串数组:$words = ['1' => 'Carlsberg', '2' => 'Premium', '3' => '250ml'];

如何从产品名称中包含$ words数组的一个,两个或所有单词的产品数据库名称中获取信息?

在编写sql查询以从数据库中获取这些产品时,我需要一些帮助

1 个答案:

答案 0 :(得分:-1)

您可以使用“ LIKE”或“ REGEXP”。正则表达式示例如下所示:

$words = ['1' => 'Carlsberg', '2' => 'Premium', '3' => '250ml'];
$search = implode("|", $words);
$query = "SELECT id,name,sku FROM products WHERE name REGEXP %{$words}%";

mysql> select * from products;
+------+------------------------+-------------+
| id   | name                   | sku         |
+------+------------------------+-------------+
|    1 | Carlsberg              | 1094802341  |
|    2 | Premium Beer 999 300ml | 1093i103    |
|    3 | Heineken 250ml         | 10901948901 |
|    4 | Test Product           | 14141414    |
+------+------------------------+-------------+
4 rows in set (0.00 sec)

mysql> select * from products WHERE name REGEXP 'Carlsberg|Premium|250ml';   

+------+------------------------+-------------+
| id   | name                   | sku         |
+------+------------------------+-------------+
|    1 | Carlsberg              | 1094802341  |
|    2 | Premium Beer 999 300ml | 1093i103    |
|    3 | Heineken 250ml         | 10901948901 |
+------+------------------------+-------------+
3 rows in set (0.00 sec)**

请确保您使用PDO,并首先清理用户输入。

参考:

MySQL Like multiple values

https://www.w3schools.com/sql/sql_like.asp