Php 使用左连接时拆分字符串
我有两个数据库。第一个包含上传文件的列表,以及上传文件的时间和到期日期。这被存储为数字,表示使用内爆的每个级别的人。所以列名“foagrade”在第一行中有10,11,12。第二个数据库是一个成绩列表,其中ID为eg 10=manager,11=HR等。我使用左连接和一个基本html表来显示查询Php 使用左连接时拆分字符串,php,mysql,Php,Mysql,我有两个数据库。第一个包含上传文件的列表,以及上传文件的时间和到期日期。这被存储为数字,表示使用内爆的每个级别的人。所以列名“foagrade”在第一行中有10,11,12。第二个数据库是一个成绩列表,其中ID为eg 10=manager,11=HR等。我使用左连接和一个基本html表来显示查询 $result = mysqli_query($con, "SELECT UPLOAD.id, UPLOAD.title, UPLOAD.faoGrade,UPLOAD.faoLocation, UPL
$result = mysqli_query($con,
"SELECT UPLOAD.id, UPLOAD.title, UPLOAD.faoGrade,UPLOAD.faoLocation, UPLOAD.date, UPLOAD.expiry, GRADE.ID, GRADE.GRADE as GR, GRADE.id
FROM UPLOAD
LEFT JOIN GRADE ON
UPLOAD.faoGrade=GRADE.ID
where owner=$user");
echo "<table id='previous'>
<tr>
<th>Title/Document name:</th>
<th>For attention of Grade</th>
<th>For Location</th>
<th>date</th>
<th>Date expires</th>
<th>Delete this briefing</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
$id=$row['id'];
echo "<tr>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['GR'] . "</td>";
echo "<td>" . $row['foaLocation']."</td>";
echo "<td>" . date("D, d M Y ",($row['date']));
echo "<td>" . date("D, d M Y ",($row['expiry']));
echo "<td><a href=pages/login/upload_delete.php?item=".$id.">delete</a></td> ";
echo "</tr>";
}
echo "</table>";
$result=mysqli\u查询($con,
选择UPLOAD.id、UPLOAD.title、UPLOAD.faoGrade、UPLOAD.faoLocation、UPLOAD.date、UPLOAD.expiry、GRADE.id、GRADE.GRADE作为GR、GRADE.id
从上传
左接坡
UPLOAD.faoGrade=GRADE.ID
其中所有者=$user”);
回声“
标题/文件名:
请各职系注意
定位
日期
日期到期
删除此简报
";
while($row=mysqli\u fetch\u数组($result))
{
$id=$row['id'];
回声“;
回显“$row['title']”;
回显“$row['GR']”;
回显“$row['foaLocation']”;
回显“.date”($row['date']);
回音“.日期($row['expiration']);
回声“;
回声“;
}
回声“;
该查询显示所有详细信息,但仅显示存储在列faograde(MANAGER)中的一级,而不是11或12。
我该如何爆炸或分裂这个?因此,该列中的每个数字都会显示一个年级名称。我还必须为专栏“faoLocation”做同样的工作,但一次只处理一个问题 这些表应该是,但利用您已有的,您可以执行以下操作:
SELECT UPLOAD.id as uploadID,
UPLOAD.title,
UPLOAD.faoLocation,
UPLOAD.date,
UPLOAD.expiry,
GRADE.ID as gradeID1,
GRADE.GRADE as GR,
GRADE.id as gradeID2 FROM UPLOAD, GRADE
WHERE
FIND_IN_SET(gradeID2,UPLOAD.faoGrade)
and UPLOAD.owner=$user;
更新
这是我的建议
有多个名为
id
和id
的列,这有点令人困惑。最好给他们起个直观的名字,比如grade\u ID
或user\u ID
。从规范化的角度来看,可以使用关系表而不是逗号分隔的列(取决于数据进入数据库的方式)。这里有一个。规范化不是一个选项吗?不知道草莓从未使用过它,我会调查并让您知道。谢谢,您选择了grade.id两次-结果集将有三列名为id
。这将混淆您的应用程序级代码。谢谢,我没有注意到。这将不起作用-尽管在\u集合中查找\u会起作用,所以-1。但是+1表示建议正常化!;-)真正的困惑,开始理解规范化。因为它有可能有很多记录,所以我们已经开始了。谢谢你pointer@Strawberry加了一把小提琴。你是对的。没有必要使用FIND_IN_SET。此外,我还将其包含在声明中以显示结果。它返回true,但在第一个逗号处停止。