在php中用数据库中的逗号分隔的值比较

时间:2014-03-31 14:13:08

标签: php mysql

我在数据库中有一个表格,其中包含以逗号分隔的多个问题(曲棍球,烹饪,电影)。

我的问题是,现在我正在触发一个类似的选择查询: -

$query="$sql="SELECT * from user where hobbies='$form_id'";

实际上在$form_id我传递了值(游戏),现在我想显示数据库中包含游戏的所有行。请记住,我必须将此值与数据库详细信息中的列中的多个值进行比较。

我使用corephp和mysql作为数据库。我真的不知道怎么做才能帮助我。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM user WHERE hobbies LIKE '%$form_id%';

但您应该更改数据库架构,如:

users(id, name, firstname, ...)
hobbies(id, name)
user_hobbies(id_user, id_hobby)

答案 1 :(得分:0)

对John Conde的评论作出回应,这里的问题在于你的数据模型。 如果一个人可以有几个爱好,你就不应该把这些爱好存放在这个人的领域里。表。长话短说,你应该有3个表:

  1. "人"表=>一切都与这个人有关,而且独一无二:姓名,生日等等......没有爱好!
  2. "爱好" table =>与爱好有关的一切。最简单的形式是2个字段:id& hobbyname。您可以想象在其他领域添加更多细节,例如室内或室外爱好等......
  3. " PersonH​​obbies" table,用于链接两者:在那一个中​​,你可能只有2个字段,1个用于id,1个用于hobby id。然后,如果一个人有3个爱好,你只需用相同的用户ID和不同的爱好ID写3条记录
  4. 这种规范化有许多优点。最大的一点是,它使您的查询更容易选择,但也更新用户的爱好。它还可以更容易地计算每个人有多少爱好等等。所以,你应该总是规范化你的数据,在创建数据库时花费更多的时间并且在你之后浪费很多时间