0

我在 html 页面上有一个多选组合框。国家的实际清单大约是 60 项。

<select name="country[]" multiple="multiple">
  <option value="UK">United Kingdom</option>
  <option value="FR">France</option>
  <option value="DE">Germany</option>
  <option value="JP">Japan</option>
</select>

在数据库中,国家列表以逗号分隔的字符串形式存储在行中,例如项目一可能是 uk、de 或 fr、de、jp 等。

我希望能够在组合框中选择多个项目并拉出项目,以便显示与该国家/地区一起选择的任何国家/地区的项目。一个问题是 country 列存储了一个逗号分隔的字符串值。

SELECT * FROM projects WHERE FIND_IN_SET("country","DE, UK")'

我的问题是 FIND_IN_SET 只会匹配整个字符串。上面的代码可能会找到一个国家/地区只有 DE 或 UK 的项目,但不会找到例如“FR,UK”的项目。

如何解析列 country 并创建 SQL 查询以显示我在组合框中选择的国家/地区?

4

1 回答 1

0

如果您想在一个字段中存储多个值(集合的一种形式),您需要以一种允许您稍后更轻松地解析它的方式来执行此操作。

一种常见的方法是在每一边都有分隔符,包括第一个和最后一个元素:

,de,us,en,

,允许您通过将其包装在分隔符内(此处)来搜索该集合中的单个值。

在您的示例中,您不会使用 Mysql btw 执行此操作(这在技术上也应该是可能的),但是您需要在输出<SELECT>输入元素时检查这一点,以便您可以将这些元素标记为已选择,哪个值在集合内。

于 2013-01-19T16:19:56.847 回答