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

标签 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>

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

谢谢!

最佳答案

您可以提供一个参数来替换 mgap_sales_pres。因此,通过 url Stirng 发送 orderBy 参数。

为了安全起见,您需要转义该变量。通常不建议这样做,但由于准备好的语句无法将变量注入(inject)到 ORDER BY 子句中,因此这是目前唯一的选择。

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

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

关于php - 使用列标题对查询结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795923/

相关文章:

php - Jquery、Ajax、PHP 数字增量器

mysql - 如何从postgresql中的同一行中找到最小最大值

php - PHP 中的新行 ("\n") 不起作用

php - 无法调用具有多个方法参数的命令

mysql - 将大于和小于的 SQL 查询合并为一个

php - 带有 volley 库的登录页面 Android

MySQL 如何使用 Not Exist 在多个表上进行选择

php - 日期不工作的 PDO bindParam

php - 使用流包装器迭代 S3 存储桶

php - 来自 mySQL 的 Google map 折线数组