使用列标题对查询结果进行排序

时间:2014-05-22 00:22:00

标签: php mysql

我有一个典型的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>

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以提供替换mgap_sales_pres的参数。因此,请通过url stirng发送orderBy参数。

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

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

或者,如果你真的是偏执狂,你可以使用switch case语句来检查验证列名。