【问题标题】:How would one select words in a string separated by commas in a MySQL field?如何在 MySQL 字段中选择用逗号分隔的字符串中的单词?
【发布时间】:2011-11-25 11:24:43
【问题描述】:

我想从一个字段中获取数据,该字段是由逗号分隔的一串单词,并将这些单词中的每一个保存到一个变量中。之后,我想取出存储的单词并使用它们来检索信息。

一个示例是包含以下信息的字段:“Bob,Sue,Adam,Tim,Hank” 我的目标是选择每个名称,使用逗号检测每个不同的名称,并将每个名称保存到一个变量或者,更有效的是一个数组,然后使用“for”命令或类似命令来显示每个人的相关信息。

我正在使用 MySQLi 命令,有人告诉我这些命令的文档很差;但是,这是我的书要求我使用的。

【问题讨论】:

  • 字段不应包含“Bob,Sue,Adam,Tim,Hank”。这应该是子表中的 5 行。

标签: mysql string select field


【解决方案1】:

您可以在 MySQL 中使用 find_in_set

假设 mysql 字段 "username" 具有以下值:"Bob,Sue,Adam,Tim,Hank"

$name="bob";

查询是

  select * from TABLE_NAME where FIND_IN_SET('$name', username);

【讨论】:

  • 太酷了! :-) 我不知道这个功能。即便如此,我相信从长远来看,不同的表格设计会更加稳健。
【解决方案2】:

其他答案建议的 explode 函数可以正常工作,但如果将这些名称分别存储在第二个表中会更优雅。

那么,你现在的位置:

  • mainidnames

我建议:

  • main: id
  • names: main_id, name

然后,您可以使用以下查询检索属于某一行的名称:

SELECT name FROM names WHERE id = $id

要添加属于某个 id 的名称,请使用:

INSERT INTO TABLE names (main_id, name) VALUES ($id, "$newname")

【讨论】:

  • 好的。我为我的困惑道歉。我必须创建一个工作朋友列表。用户将访问个人资料并单击“添加”。这会将点击用户名添加到被点击者的“朋友”字段中,并带有逗号分隔符。你的方法能用这样的东西吗?
  • 分离表方法将使您的用例更容易。您只需在名称表中添加一个名称(请参阅扩展答案),而您现在必须检索字符串,添加一个新的逗号分隔名称,然后替换数据库中的字符串。
  • 感谢您的回复。我试试你的方法。我以前做过 HTML 和 CSS,但 PHP 和 MySQL 是两种不同的动物。
  • 顺便说一下,如果这是一张可以互相成为朋友的人的表格,那么正确的数据库设计要求您在朋友字段中存储一个人的 ID(可能是一个整数)而不是他/她姓名。使用 id,您始终可以找到名称,但仅使用名称,很难找到其他信息。如果不是不可能:两个人可以有相同的名字!
【解决方案3】:
  1. 选择字段
  2. $names = explode(',', $thefield);

你现在有一个值数组

【讨论】:

    【解决方案4】:

    $arrayList = explode(',', "Bob,Sue,Adam,Tim,Hank");

    结帐http://php.net/manual/en/function.explode.php

    【讨论】:

      【解决方案5】:

      你想EXPLODE

      例如:

      $persons= explode(",", "Bob,Sue,Adam,Tim,Hank");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 2013-11-02
        • 1970-01-01
        • 2012-03-20
        • 2016-09-04
        相关资源
        最近更新 更多