php MYSQL 查询 "ORDER BY"不工作

标签 php mysql sorting variables

预先警告:我确定我的代码笨拙且效率低下,请随时给我打电话。我对此很陌生。

我正在尝试按列对我的查询结果进行排序,该列表示为选择输入的结果。选择输入存在于 feed.php 上,它具有 include: 'feedphp2.php

使用 action="feedSort.php" 选择输入自动提交 onchangefeedSort.php 获取提交的值并重定向到 feed.php?sort=submittedValue。然后 feed.php 中包含的 feedphp2.php 采用 $_GET['sort'] 值并提取按该列排序的查询。

//feed.php

<?php
session_start();
if(!isset($_SESSION['userID'])) {
        header('Location: login.html');
}

?>

<html>
<head>
<title>Title</title>

<link href="style.css" type="text/css" rel="stylesheet">
<link href='https://fonts.googleapis.com/css
family=Josefin+Sans:400,100,300,600,700' rel='stylesheet' type='text/css'>
</head>

<body style="background-color:rgba(0,212,242,0.1)">

<div class="headerSmall">
    <div class="container">
        <a href="index.php"><img class="logoImgSmall"
src="images/logosmall2.png"></a>
        <div class="navFeed">
            <?php include 'usernameGet.php';?>,<a 
href="sessionDestroy.php">Log Out</a>
            <a href="addMeal.php">List a Meal</a>
            <a href="dashboardBought.php">Dashboard</a>
        </div>

    </div>
</div>

<div class="container">


    <div class="sort">
    <form action="feedSort.php" method="POST">
        <select name="sortForm" onchange="this.form.submit()">
            <option value="">Sort By...</option>
            <option value="user">By User</option>
            <option value="dateAdded">By Date Added</option>


        </select>
    </form>
    </div>

    <?php include 'feedphp2.php'?>


</div>


</body>
</html>

空间

//feedphp2.php

<?php
include 'MysqlConnect.php';
mysqli_select_db($conn,$dbname);

if (isset($_GET['sort'])) {
    $sortBy = $_GET['sort'];

    echo $sortBy;

    $resultQuery = "SELECT * FROM meals
    ORDER BY '$sortBy'";

} else {
    echo 'sortBy is not set.';
    $resultQuery = "SELECT * FROM meals
    ORDER BY user";
}

$result = mysqli_query($conn, $resultQuery);

//Write to divs
while ($rows = mysqli_fetch_assoc($result)) {

    $imgSrc = $rows['image']; 

    echo '<a href="meal.php?'.'mealID=';
    echo $rows['ID'];
    echo '">';

    echo '<div class="entry">';
    echo '<div class="foodPic">';
    echo '<img src="';

    echo $imgSrc;

    echo '">';
    echo '</div>';
    echo '<p class="entryName">'.$rows['mealName'].'</p>';
    echo '<p class="entryServ">'.$rows['mealQuan'].'</p>';
    echo '<p 
   class="entryPrice">$'.$rows['mealDollars'].'.'.$rows['mealCents'].'</p>';
    echo '<img class="servingsIco" src="images/servings.png">';

    echo '<p class="user">'.$rows['user'].'</p>';
    echo '</div>';
    echo '</a>';
}

?> 

空间 //feedSort.php:

<?php
session_start();
$sortBy = $_POST['sortForm'];

header ("Location: feed.php?sort=".$sortBy."");
?>

我的表中的列同时存在于 userdateAdded 中,并且在查询中明确提供时完美排序,即:SELECT * FROM meals 按用户订购。然而,虽然通过 PHP 变量提供:

其中 $sortBy = user 返回与 $sortBy = dateAdded 完全相同的排序顺序。

非常感谢您提供的任何帮助。

最佳答案

您使用 $_POST 方法传递值并使用 $_GET 方法检索它。并更改不带引号的 $sortby。在 feedphp2.php 中编辑这些行

<?php
include 'MysqlConnect.php';
mysqli_select_db($conn,$dbname);
if (isset($_POST['sort'])) {
    $sortBy = $_POST['sort'];
    echo $sortBy;
    $resultQuery = "SELECT * FROM meals
    ORDER BY $sortBy";

} else {

或者使用 $_REQUEST[], 获取 get 和 post 方法的方法

<?php
include 'MysqlConnect.php';
mysqli_select_db($conn,$dbname);
if (isset($_REQUEST['sort'])) {//request method
    $sortBy = $_REQUEST['sort'];//
    echo $sortBy;
    $resultQuery = "SELECT * FROM meals
    ORDER BY $sortBy";

} else {

关于php MYSQL 查询 "ORDER BY"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701779/

相关文章:

mysql - $_POST 导致 MySQL 数据库中的空字段

mysql - 子查询在 group by 子句中返回多于 1 行 - MySQL

Python 将文件中相似的行分组到一行

php - 为什么 Code Igniter 给我一个白页?

php - 如何判断SQL更新语句是否删除成功

mysql - 子查询对项目进行计数,然后按主查询的字段对它们进行分组,不重复

javascript - javascript 排序函数中相等的项目会发生什么

MongoDB 按子集总和排序

php - 如何提高网站标题搜索结果

php - MySQL 变量不能立即可用