2011-11-25 58 views
2

我想从字段中获取数据,这是一串用逗号分隔的单词,并将每个单词保存为一个变量。之后,我想将存储的单词用于检索信息。在MySQL字段中,如何选择用逗号分隔的字符串中的单词?

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

我正在使用MySQLi命令,据我所知,这些命令记录不完整;然而,这是我的书指示我使用的。

+2

字段不应该包含“鲍勃说,苏,亚当,蒂姆,汉克”。这应该是子表中的5行。 – gbn

回答

2

explode功能其他答案建议将正常工作,但如果你在第二个表分开存放这些名字会更优雅。

那么,你现在有:

  • mainidnames

我建议:

  • mainid
  • namesmain_idname

然后你可以检索的名字属于一个行与查询,如:

SELECT name FROM names WHERE id = $id 

要添加属于某一ID,使用了一个名字:

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

好的。我为我的困惑道歉。我必须创建一个工作的朋友列表。用户将访问一个配置文件并点击“添加”。这将增加用逗号分隔符点击用户姓名到clickee的“friends”字段。你的方法可以用这样的东西工作吗? –

+0

单独的表格方法将使您的用例更容易。您只需在名称表中添加一个名称(请参阅扩展答案),而您现在必须检索字符串,添加一个新的以逗号分隔的名称,然后替换数据库中的字符串。 – mhelvens

+0

谢谢你的回复。我会尝试你的方法。我之前完成了HTML和CSS,但PHP和MySQL是两种不同的动物。 –

0
  1. 选择字段
  2. $名称=爆炸( '',$ thefield);

您现在有值

0

你想EXPLODE数组!

例如:

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

你可以在MySQL中使用find_in_set

假设mysql字段“用户名”有这些值:“鲍勃说,苏,亚当,蒂姆,汉克”

$name="bob"; 

QUERY是

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

很酷! :-)我不知道这个功能。即便如此,我认为长远来看,不同的餐桌设计将更加稳健。 – mhelvens

+0

yes :) mhelvens –

相关问题