用列头排序查询结果


Sorting query results with column head

我有一个典型的SQL查询,返回如下结果:

$result_acc_man = "SELECT * FROM mgap_management WHERE account_manager_id = '" . $_SESSION['account_manager_id'] . "' ORDER BY mgap_sales_pres";
$stmt = $pdo->prepare($result_acc_man); 
$stmt->execute();
while($row_acc_man = $stmt->fetch(PDO::FETCH_ASSOC))
{
$salespres = $row_acc_man['mgap_sales_pres'];
$regvp = $row_acc_man['mgap_regional_vp'];
$areasales = $row_acc_man['mgap_area_sales_manager']
?>
<p class="asminfo"><span>Your ASM: <?php echo $areasales;?></span></p>
<p class="asminfo"><span >Your Regional VP: <?php echo $regvp; ?></span></p>
<p class="asminfo"><span >Your Sales President: <?php echo $salespres; ?></span></p>         
<?php
}
?>

这里是列标题

<div id="viewheadaccept">
            <span class="namecustaccept1">ACCOUNT NAME </span> 
            <span class="custaccept">ACCOUNT TYPE</span>
            <span class="recoverycustaccept">OPPORTUNITY SIZE</span>  
</div>

我需要添加单击列名和对数据排序的功能。除了创建包含排序的不同查询的多个链接页面之外,有没有更简单的方法来实现这一点?

谢谢!

您可以提供一个参数来替换mgap_sales_pres。所以通过url字符串发送一个orderBy参数。

为了安全起见,您需要转义该变量。通常不建议这样做,但由于预处理语句不能将变量注入ORDER BY子句,因此这是目前唯一的选择。

例如mysql_real_escape_char($_GET['orderBy'])

如果你真的很偏执,你可以使用一个switch case语句来检查一个有效的列名。