PHP/Mysql:从查找表读取数据字段值(拆分数组)
我有一个Mysql数据库和两个表: 文件 ... -斯塔夫 职员 -身份证 -名字 DOCUMENTS表将每个文档分配给STAFF表中的单个或多个用户,因此DOCUMENTS表中的staffID由逗号分隔的STAFF ID数组组成,例如(2,14) 我成功地将数组拆分为各个值:PHP/Mysql:从查找表读取数据字段值(拆分数组),php,mysql,database,Php,Mysql,Database,我有一个Mysql数据库和两个表: 文件 ... -斯塔夫 职员 -身份证 -名字 DOCUMENTS表将每个文档分配给STAFF表中的单个或多个用户,因此DOCUMENTS表中的staffID由逗号分隔的STAFF ID数组组成,例如(2,14) 我成功地将数组拆分为各个值: 二, 十四, 但是,我不希望有身份证号码,而是希望有员工表中的实际姓名——我如何才能做到这一点。任何帮助都将不胜感激-请参阅下面我当前的代码 $result = mysql_query("SELECT org
- 二,
- 十四,
$result = mysql_query("SELECT
organizations.orgName,
documents.docName,
documents.docEntry,
documents.staffID,
staff.Name,
staff.ID
FROM
documents
INNER JOIN organizations ON (documents.IDorg = organizations.IDorg)
INNER JOIN staff ON (documents.staffID = staff.ID)
")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
$splitA = $row['staffID'];
$resultName = explode(',', $splitA );
$i=0;
for($i=0;$i<count($resultName);$i++)
{
echo "<a href='staffview.php?ID=".$row['docName'].
"'>". $resultName[$i]."</a><br>";
}
echo '<hr>';
}
$result=mysql\u查询(“选择
orgName,
documents.docName,
documents.docEntry,
文件,斯塔夫,
职员姓名,
职员ID
从…起
文件
上的内部加入组织(documents.IDorg=organizations.IDorg)
上的内部联接人员(documents.staffID=staff.ID)
")
或者死(mysql_error());
while($row=mysql\u fetch\u数组($result)){
$splitA=$row['staffID'];
$resultName=explode(“,”,$splitA);
$i=0;
对于($i=0;$i而言,您的现有代码似乎可以在documents.staffID=staff.ID
的位置工作-即只有一个staffID与文档关联
您最好添加一个表,分别对文档和人员之间的关系进行建模,并删除或弃用文档表中的staffID字段
CREATE TABLE document_staff (
document_id <type>,
staff_id <type>
)
MySQL集合类型有一些限制,例如最大成员大小为64,但可能足以满足您的需要
如果是我,我会改变模型而不是使用FIND\u IN\u SET
非常感谢您的回答-非常感谢!
我的表格设置为:
文件:
CREATE TABLE documents (
docID int NOT NULL,
docTitle mediumblob NOT NULL,
staffID varchar(120) NOT NULL,
Author2 int,
IDorg int,
docName varchar(150) NOT NULL,
docEntry int AUTO_INCREMENT NOT NULL,
/* Keys */
PRIMARY KEY (docEntry)
) ENGINE = MyISAM;
工作人员:
CREATE TABLE staff (
ID int AUTO_INCREMENT NOT NULL,
Name varchar(60) NOT NULL,
Organization varchar(20),
documents varchar(150),
Photo mediumblob,
/* Keys */
PRIMARY KEY (ID)
) ENGINE = MyISAM;
文档表通过查找表(下拉列表)读取从STAFF表中,这样我就可以为一个文档分配多个STAFF成员。这样我就可以访问DOCUMENTS表中的staffID数组并将其拆分,我想知道是否有办法将staffID与STAFF关联。命名并打印出查询结果中的STAFF名称,而不是ID。再次感谢!我更新了答案to显示我想到的完整查询。如果你不需要员工ID,你可以忽略它。从员工表中选择记录对组织有什么意义吗?顺便说一句,最好将额外信息编辑到原始问题中,而不是发布更新作为答案!
CREATE TABLE staff (
ID int AUTO_INCREMENT NOT NULL,
Name varchar(60) NOT NULL,
Organization varchar(20),
documents varchar(150),
Photo mediumblob,
/* Keys */
PRIMARY KEY (ID)
) ENGINE = MyISAM;