php - 我应该在这段代码中放置 ORDER BY 吗?

标签 php mysql mysqli

这是一个简单的问题,但我似乎无法弄清楚。所以我有这段代码可以解析搜索并对结果进行分页。效果很好。

<?php
require_once("models/config.php");
if (!securePage($_SERVER['PHP_SELF'])){die();}
require_once("models/header.php");
define("NUMBER_PER_PAGE", 5); //number of records per page of the search results

function pagination($current_page_number, $total_records_found, $query_string = null)
{
    $page = 1;

    echo "Page: ";

    for ($total_pages = ($total_records_found/NUMBER_PER_PAGE); $total_pages > 0;     $total_pages--)
{
    if ($page != $current_page_number)
        echo "<a href=\"?page=$page" . (($query_string) ? "&$query_string" : "") .     "\">";

    echo "$page ";

    if ($page != $current_page_number)
        echo "</a>";

    $page++;
}
}

$page = ($_GET['page']) ? $_GET['page'] : 1;
$start = ($page-1) * NUMBER_PER_PAGE;


$personid = ($_POST['personid']) ? $_POST['personid'] : $_GET['personid'];
$firstname = ($_POST['firstname']) ? $_POST['firstname'] : $_GET['firstname'];
$surname = ($_POST['surname']) ? $_POST['surname'] : $_GET['surname'];

$sql = "SELECT * FROM persons WHERE 1=1";

if ($personid)
$sql .= " AND personid='" . mysqli_real_escape_string($mysqli,$personid) . "'";

if ($firstname)
$sql .= " AND firstname='" . mysqli_real_escape_string($mysqli,$firstname) . "'";

if ($surname)
$sql .= " AND surname='" . mysqli_real_escape_string($mysqli,$surname) . "'";


$total_records = mysqli_num_rows(mysqli_query($mysqli,$sql));


$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;

pagination($page, $total_records,    "personid=$personid&firstname=$firstname&surname=$surname");



 $loop = mysqli_query($mysqli,$sql)
 or die ('cannot run the query because: ' . mysqli_error($mysqli,i));

 while ($record = mysqli_fetch_assoc($loop))
 echo "<br/>{$record['personid']}) " . stripslashes($record['firstname']) . " - {$record['surname']}";


 echo "<center>" . number_format($total_records) . " search results found</center>";

pagination($page, $total_records,     "personid=$personid&firstname=$firstname&surname=$surname");

?>

但是,我希望我的搜索结果按姓氏排序。所以我修改了一行代码来表示:

$sql = "SELECT * FROM persons WHERE 1=1 ORDER BY surname";

然后,当我搜索名字时,我会得到所有记录,并按姓氏完美排序。我尝试将 ORDER BY 放在其他地方,但搜索不起作用。

为了获得按姓氏排序的正确过滤结果,ORDER BY 条件必须放在此处吗?

感谢您提前提供的帮助。

最佳答案

您正在寻找这样的东西吗?

$sql .= " ORDER BY surname";
$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;

问题是否只是您需要在正在构建的 SQL 查询末尾附加“ORDER BY”语句?

关于php - 我应该在这段代码中放置 ORDER BY 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22487257/

相关文章:

php - mysql。以月为单位的日期差异

php - 尝试从 db php 获取随机数不起作用

php - APNS 与 Google App Engine 和 PHP SSL 错误

php - 使用 PDO/MySQL 仅显示 ID 不是具有相同 ID 的不同表的项目

mysql - 如何删除 LIKE 运算符准备语句中的引号?

javascript - JQuery 未读取 JSON 数组值

mysql - 计算 MySQL 和/或 Oracle 中的列访问统计信息

php - 尝试在 Jessie 服务器上使用 PHP7 获取 LAMP 配置

php - 如何立即引用 html select 标签

javascript - 在 Ajax 调用上发送输入数据并在 php 文件中进行处理