Php 从mysql数组中选择数据

Php 从mysql数组中选择数据,php,mysql,Php,Mysql,在我的MySQL数据库中,我有一个名为friend\u array的数组列(文本类型),其中变量usernames用逗号(,)分隔 例如:user1friend\u数组单元格中的值为: prevert, borges, eliot, wislawa, derek, hebert, pushkin, plath, donnelly, ahlberg, ginsberg, amiri, rilke, mckay, aam, wowen, larkin, michaux, moliver, dicki

在我的MySQL数据库中,我有一个名为
friend\u array
的数组列(文本类型),其中变量
usernames
用逗号(,)分隔

例如:
user1
friend\u数组
单元格中的值为:

prevert,
borges,
eliot,
wislawa,
derek,
hebert,
pushkin,
plath,
donnelly,
ahlberg,
ginsberg,
amiri,
rilke,
mckay,
aam,
wowen,
larkin,
michaux,
moliver,
dickinson,
rumi,
reverdy,
brecht,
tate,
cad,
cummings,
dianeb,
sexton,
redson,
pessoa,
transtromer,
shakespeare,
mistral,
sodergran,
bukowski,
auden,
tedhu,
ashton,
tomandrews,
gwallas,
updike,
ashbery,
jenkins,
rhass,
whitehead,
montale,
ritvo,
snyder,
kooser,
simic,
koertge,
nemerov,
aporter,
reichhold,
rduncan,
meretop,
kkoch,
strand,
kahf,
asha,
keats,
pinter,
santoka,
opaz,
breton,
schreiner,
bataille,
cedo,
galeano
现在,如何在php中分别选择每个朋友,以便在不重复的情况下查看朋友列表


提前感谢

您应该创建一个新表
friend
,如下所示,例如:

friend
===============
id_user | username
使用
id\u user1+username
上的
主键
,通过这种方式获取
user1
的所有好友,您只需执行
从好友中选择username,其中id\u user=:id\u user1。如注释中所述,将此类字段与包含多个需要选择的值的字符串一起使用是非常糟糕的做法

现在回答这个问题,如果您设法获得
friend\u数组
值(如您所说,一个包含多个用户名并用逗号分隔的字符串),您可以执行以下操作:

$data = explode(',', $your_friend_array_string);
如果要删除重复项,请执行以下操作:

$data_unique = array_unique($data);

希望它有帮助,但如果可能的话,从改变存储数据的方式开始

虽然我完全同意,但您应该努力设置操作关系并使用规范化(即:创建一个friends表)。问题是这是否可能,而无需重复查询

是这样的:

SELECT
    a.name, 
    b.name 
FROM user a 
LEFT JOIN user b ON FIND_IN_SET(b.name, a.friends)
WHERE 
   a.name = 'name';

这并不美观,如果您有任何方法来编辑数据库结构,您应该这样做并放弃此“解决方案”。

保存逗号分隔的数据违反规范化规则,对这些记录执行搜索、CRUD操作将非常困难。尝试将每个
friend\u数组
数据分别保存在数据库中。您似乎应该阅读关系数据库的基础知识。问题不在于如何选择,而在于如何存储IMHO。如果数据是单键数组,您可以尝试
$usernames[0]=“prevert、borges、eliot、wislawa、derek、hebert、pushkin、plath、donnelly、ahlberg、ginsberg、amiri、rilke、mckay”$片段=分解(“,”,$usernames[0]);echo$件[0]相关: