Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用左连接时拆分字符串_Php_Mysql - Fatal编程技术网

Php 使用左连接时拆分字符串

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

我有两个数据库。第一个包含上传文件的列表,以及上传文件的时间和到期日期。这被存储为数字,表示使用内爆的每个级别的人。所以列名“foagrade”在第一行中有10,11,12。第二个数据库是一个成绩列表,其中ID为eg 10=manager,11=HR等。我使用左连接和一个基本html表来显示查询

$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,但在第一个逗号处停止。