left在php / mysql中加入一个带数组的列

时间:2012-06-19 20:32:41

标签: php mysql arrays join comma

我有几个表1个联系人和多个数据

联系人有一个ID字段和一个名字字段,数据有一个名为Contacts的字段(以及其他字段)。

例如联系人

ID - Name
1 - James
2 - Mark
3 - Doug

e.g。数据

ID - Contacts - Data
1 - 1,3 - more data
2 - 2 - more data
3 - 2,3,1 - more data

显然,逗号分隔的数字链接到联系人表格中的多个人。如何从逗号分隔列表转换为人名。标准左连接不起作用。

有没有办法可以在原始查询中执行此操作,或者我必须在原始while循环内的foreach中添加一段时间?例如(以下不管怎么办,但就iv而言):

//original query while {
        $contacts_array = array(implode(",",$db['Contacts'])); 
        foreach ($contacts_array as $contacts_id) 
        { 
            $contacts_query = "SELECT Name FROM data_contacts WHERE ID='$contacts_id'";
            $contacts_result = mysql_query ($contacts_query);
            $contactslist="";
            while($contacts=mysql_fetch_array($contacts_result)){
                $contactslist .= $contacts['Name'].", ";
            } 
        } 
echo $contactslist;
}

2 个答案:

答案 0 :(得分:4)

我总是存储与单个行的多对多关系,而不是以逗号分隔的值:

ID - Contacts
1 - 1
1 - 3
2 - 2
3 - 2
3 - 3
3 - 1

答案 1 :(得分:1)

可以使用FIND_IN_SET。但是,您应该像MrSlayer建议的那样重新考虑您的表结构。这是存储多对多关系的正确,关系的方式。