0

我试图按 X 列名的顺序从我的查询中过滤我的结果...

我有以下...

$sth = $conn->prepare("SELECT * FROM directory
                        WHERE user_active != '' 
                          AND County = :county 
                       ORDER BY' . $row['Date'] .'" );

我想获取所有结果并从日期列中的值排序,这存储为 XX/XX/XXXX

谁能看到我做错了什么?

4

4 回答 4

1

是什么$row['Date']?您只能按列名或列索引(1、2、3,...)排序

$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND County = :county ORDER BY date" );

此外,您的查询遗漏了 ORDER BY 后面的空格。

于 2012-12-30T18:22:13.907 回答
0

必须按特定字段值排序FIELD( )

在你的例子中

  $sth = $conn->prepare("SELECT * FROM directory
                    WHERE user_active != '' 
                      AND County = :county 
                   ORDER BY FIELD( date , '.$row['Date'].')   " ); 
                                     ^---------------------------------column name    
                                                  ^^-------------------field value

在这里举例

于 2012-12-30T20:07:42.110 回答
0

像这样试试

$sth = $conn->prepare
        ("SELECT 
            * 
        FROM directory 
        WHERE user_active != '' 
        AND County = :county 
        ORDER BY '.$row['Date'].'

        DATE_FORMAT('$row['Date']','%m-%d-%Y'");
于 2012-12-30T18:25:46.613 回答
0

Gordon 和 AmShegar 都为您提供了关于为什么这不起作用的线索。

要按日期排序结果,只需执行以下操作:

SELECT <fields>
FROM <table>
ORDER BY <datefield>

并且您可以使用“ASC”或“DESC”作为后缀,具体取决于您想要较旧的日期还是较新的日期。这一切都假设日期字段实际上是一个日期字段。

于 2012-12-30T18:24:39.807 回答