Php SQL选择具有比较的列

Php SQL选择具有比较的列,php,sql,Php,Sql,我有一个SQL表,其中有一列名为keywords 表: | id | keywords | | 0 | music programming guitar | 现在我有了一个数组,比如$array=array(“船”、“水”、“音乐”) 我的目标是从关键字中的数组中选择至少包含一项内容的所有列 Sql查询: "SELECT * FROM table WHERE keywords IN ('".$array."')"; 它不会返回任何结果。我将要描述的方法不推荐使用。正确的方法是使用一个单独的

我有一个SQL表,其中有一列名为
keywords

表:

| id | keywords |

| 0 | music programming guitar |
现在我有了一个数组,比如
$array=array(“船”、“水”、“音乐”)

我的目标是从
关键字
中的数组中选择至少包含一项内容的所有列

Sql查询:

"SELECT * FROM table WHERE keywords IN ('".$array."')";

它不会返回任何结果。

我将要描述的方法不推荐使用。正确的方法是使用一个单独的表,每个
id
关键字都有一行。这是一个连接表,其行如下所示:

id       keyword
1        music
1        programming
1        guitar
这是在关系数据库中存储列表的正确方法。数据库有这样一个伟大的列表数据结构。它被称为表,而不是字符串

但是,如果你真的被困在这种情况下,那么你可以找到解决办法。据推测,性能不是问题

该技巧是将列表格式化为正则表达式,并将
where
子句创建为:

where keywords regexp 'boat|water|music'

您应该首先规范化数据库,去掉列关键字中以空格分隔的值。完成后,您的查询也将工作。是否使用逗号删除?比如音乐、编程、吉他等。不。看看这个:基本上,你根本不会在一列中存储多个不同的值,比如不同的关键字,而是使用多个表。