查询和联接出现问题

时间:2018-09-05 19:55:07

标签: php mysql join nested-query

我正在使用的主页称为“项目详细信息页面”,当您在窗体上选择一个项目编号时,它将在子窗体中查询与该项目编号相关的任何记录,并将它们显示在名为(TasksSubform)的页面中。 名为(TasksSubform)的页面使用名为mysqli_connect.php的php文件获取数据库连接,并将该连接分配给mysqli_connect.php文件中的$ dbc。 然后,该页面查询名为“ CommonTasks”的表1,并使用

开始在页面上的表中逐行显示数据。
sync_file_range

当前显示的记录中的一列名为“ AssignedTo”,它在Employees表中生成唯一的ID号,而不是与该ID号关联的雇员名的文本值。因此,我需要能够使用Fetch列出CommonTasks表中的记录,然后,当它尝试在Common Tasks表内的“ AssignedTo”列中显示值时,它必须在Employees表中查找与“常见任务”表中的相同值,然后用“雇员”表中的文本值替换“分配给字段”的数字值。

sync_file_range

这就是我所拥有的。然而,它所产生的只是php页面上“分配给”字段中的空白。

enter image description here 我是php和mysql的新手。 这可能是我忽略的简单事情。 但是,过去几天我一直在对各种方法进行故障排除,但似乎无法弄清楚我在做什么错。

while($row = $result->fetch_assoc())

2 个答案:

答案 0 :(得分:0)

当前,此行正在产生结果

$result = $dbc->query($sql);

以下行将不会执行mysql查询。

echo "<td>". $row ['SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = $_GET[AssignedTo] LIMIT 1'] . "</td>";

如所写,您试图在$ result中查找一个不存在的行值。您需要在第一个while循环中调用第二个查询,并传递$ _GET [AssignedTo]的值,该值可能是$ row [AssignedTo]

类似这样的东西

while($row = $result->fetch_assoc()) {

   echo "<tr>";
   echo "<td><a href=  $link  > $row[Title]  </a></td>";
   echo "<td>". $row['DueDate'] . "</td>";
   echo "<td>". $row['StartDate'] . "</td> " ;
   echo "<td>". $row['Cost'] . "</td>";
   echo "<td>". $row['Priority'] . "</td>";
   echo "<td>". $row['PercentComplete'] . "</td> " ;

   $emp = "SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = '$row[AssignedTo]' LIMIT 1";
   $result2 = @mysqli_query($dbc, $emp);
   $row2 = $result2->fetch_assoc();


   echo "<td>". $row2 ['Firstname'] . " ". $row2 ['Lastname'] . "</td>";
   echo "<td>". $row['Description'] . "</td> " ;
   echo "</tr>";
}

答案 1 :(得分:0)

所以,这是我对您的示例所做的修订:

while($row = $result->fetch_assoc()) {

   echo "<tr>";
   echo "<td><a href=  $link  > $row[Title]  </a></td>";
   echo "<td>". $row['DueDate'] . "</td>";
   echo "<td>". $row['StartDate'] . "</td> " ;
   echo "<td>". $row['Cost'] . "</td>";
   echo "<td>". $row['Priority'] . "</td>";
   echo "<td>". $row['PercentComplete'] . "</td> " ;

   $emp = "SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = '$row[AssignedTo]'";
   $result2 = @mysqli_query($dbc, $emp);
   $row2 = $result2->fetch_assoc();


   echo "<td>". $row2['LastName']," , ",$row2[FirstName] . "</td>";
   echo "<td>". $row['Description'] . "</td> " ;
   echo "</tr>";
}
}
echo "</table>";
?>

哪个生成此内容:Results of modified code

非常感谢您的帮助! 由于我正在将Access数据库转换为mySQL并重新创建所有查询,表单和报告。...我相信在不久的将来我会遇到大量的问题。

埃里克