如何在 php 中从 mysql 查询中排除列


How do I exclude a Column from a mysql query in php?

我有一个简单的查询(在mySQL视图中),php正在使用它来创建表:

select `swtickets`.`ownerstaffid` AS `ID`,
`swtickets`.`ownerstaffname` AS `Owner`,
sum(if((`swtickets`.`ticketstatusid` = 2),1,0)) AS `In Progress`,
sum(if((`swtickets`.`ticketstatusid` = 4),1,0)) AS `Pending Customer`,
sum(if((`swtickets`.`ticketstatusid` = 5),1,0)) AS `Customer Replied`,
sum(if((`swtickets`.`ticketstatusid` = 9),1,0)) AS `Suggested Resolution`,
sum(if((`swtickets`.`priorityid` in (3,6) and `swtickets`.`ticketstatusid` in     (2,4,5,9)),1,0)) AS `High/Critical`,
sum(if((`swtickets`.`ticketstatusid` in (2,4,5,9)),1,0)) AS `Total Workable` 
from `swtickets` where ((`swtickets`.`departmentid` = 14) 
and ownerstaffid in (select staffid from swstaff where staffgroupid=4 and isenabled =  1)
and (`swtickets`.`ownerstaffname` <> '')) group by `swtickets`.`ownerstaffname`

我在 while 循环中调用数据,但我似乎无法摆脱我需要调用的"ID"列,因为它充当 Owner 列超链接的目标。 理想的标头是:

所有者 |进行中 |待定客户 |客户回复 |建议的解决方案 |总可行

该 php:

 $ticketloadquery = mysql_query("SELECT * from open_tickets;")
or die(mysql_error()); 
$ticketloadfield_num = mysql_num_fields($ticketloadquery);
echo "<div><h1>Work Load</h1>";
if(mysql_num_rows($ticketloadquery)==0) {
echo "<i>There are no currently unassigned tickets!</i>";
}
else{
echo "<table border='1'><tr>";
for($i=0; $i<$ticketloadfield_num; $i++)
{
$ticketloadfield = mysql_fetch_field($ticketloadquery);
echo "<td>{$ticketloadfield->name}</td>";
}
echo "</tr>'n";
while($ticketloadinfo = mysql_fetch_array( $ticketloadquery )) 
{ 
echo "<tr>"; 
echo "<td><a href='https://support.mysite.com/staff/dashboard.php?   id=".$ticketloadinfo['ID']."', target='_blank'>".$ticketloadinfo['Owner']."</a></td> "; 
echo "<td>".$ticketloadinfo['Owner'] . "</td> "; 
echo "<td>".$ticketloadinfo['In Progress'] . "</td> "; 
echo "<td>".$ticketloadinfo['Pending Customer'] . " </td>"; 
echo "<td>".$ticketloadinfo['Customer Replied'] . " </td>";
echo "<td>".$ticketloadinfo['Suggested Resolution'] . " </td>"; 
echo "<td>".$ticketloadinfo['Total Workable'] . " </td></tr>"; 
} 
echo "</div>";
echo "</table>"; 
}

有什么建议吗?

即使您

现在设法为ID列设置例外,这种方法也会导致将来出现问题,因为您从标题查询自动生成列,然后手动为要显示的信息添加列。

有两种选择:

  1. 您可以自动生成所有信息,以便标题和内容始终同步。不建议这样做,因为您在显示信息的方式方面没有任何灵活性
  2. 还要手动添加标题行。通过这种方式,您可以显示所需的任何内容,并且可以使用简单的html块来实现这一点。

作为旁注,我还建议使用th元素而不是标题行的td元素。

因此,您将替换:

for($i=0; $i<$ticketloadfield_num; $i++)
{
$ticketloadfield = mysql_fetch_field($ticketloadquery);
echo "<td>{$ticketloadfield->name}</td>";
}

跟:

?>
<th>Owner</th>
<th>In Progress</th>
<th>Pending Customer</th>
<th>Customer Replied</th>
<th>Suggested Resolution</th>
<th>Total Workable</th>
<?php

删除

echo "<td><a href='https://support.mysite.com/staff/dashboard.php?   id=".$ticketloadinfo['ID']."', target='_blank'>".$ticketloadinfo['Owner']."</a></td> "; 

echo "<td>".$ticketloadinfo['Owner'] . "</td> "; 

删除只有所有者的单元格,因为它与上一个单元格相同,只是没有超链接。