我有一个MySQL表products(id, name, sku)
而且我有一个字符串数组:$words = ['1' => 'Carlsberg', '2' => 'Premium', '3' => '250ml'];
如何从产品名称中包含$ words数组的一个,两个或所有单词的产品数据库名称中获取信息?
在编写sql查询以从数据库中获取这些产品时,我需要一些帮助
答案 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,并首先清理用户输入。
参考: