使用数组放入MySQL查询的条件

时间:2015-04-26 12:24:46

标签: php mysql

我在我的网站上使用wordNet数据库,我正在寻找同义词。

情景是

该网站是一个电子商务网站。有一个用户搜索框。一旦用户键入要搜索的关键字,系统将根据用户输入直接找到同义词,并将其与我自己的数据库匹配并显示结果。因此,例如,在我的数据库中,只有名称为microwave的项目。但在我得到微波炉的同义词之后,还有另一个基于微波炉的同义词,比如烤箱。

所以,我想要的是,即使用户输入“烤箱”,系统也会显示微波的结果,因为基本上这两件事情都是一样的。

我正在考虑将一个数组放入wordNet数据库的第一个同义词结果中。但是,问题是如何根据同义词显示结果?

我正在考虑像这样的查询。此查询是从我自己的数据库获取数据并使用从wordnet数据库中检索的数据列表

Select the information needed
from the database table
where category.name LIKE (the array of result from wordnet database)

我是对的吗?

请注意,我已成功从wordnet数据库中检索同义词。问题是如何使用从wordnet数据库中检索到的同义词列表来生成来自我的数据库的数据?

有人可以指导我吗?

非常感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:1)

假设$array包含来自wordNet的同义词类别。要将其转换为可在查询中使用的字符串,请执行以下操作:

$category_string = '"' . implode('","',$array) . '"';

这会将您的数组转换为字符串,并按","分隔元素。该字符串在结尾和开头都有一个",因此可以插入到SQL IN语句中。

您的SQL命令需要JOIN三个表(productscategoriesproduct_categories),并为所需的类别名称设置WHERE过滤器。 SELECT命令看起来与此类似:

SELECT * FROM products, categories, product_categories WHERE products.product_id = product_categories.product_id AND product_categories.category_id = categories.category_id AND categories.category_name IN (INSERT CATEGORY NAMES)

如果要使用PHP运行SELECT命令,则必须如下所示:

$sql = 'SELECT * FROM products, categories, product_categories WHERE products.product_id = product_categories.product_id AND product_categories.category_id = categories.category_id AND categories.category_name IN (' . $category_string . ')';

答案 1 :(得分:0)

您可以创建两个表。

一个包含类别,一个包含子类别,并在查询中建立它们之间的关系。


示例

我们有一个名为“category”的表,其中包含字段:id(int,primary key),name(varchar)

在此表中,我们有一行id = 1,name = oven

我们有一个名为“subcategories”的第二个表,其中包含字段:id(int,primary key),name(varchar),category(int)

在此表中,我们有一行id = 1,name = microwave,category = 1

然后,您可以执行以下查询:
SELECT category.name as catname, subcategories.name as subcatname FROM category, subcategories WHERE category.id = subcategories.id AND subcategories.name LIKE '%crowav%';

这将返回以下内容:
catname: oven subcatname: microwave