如何使SQLite查询按几个条件排序,并在PHP中工作

时间:2014-06-24 08:47:39

标签: php sqlite sorting

有人能指出我如何编写多种类型的SQLite查询,这将在PHP中运行吗?

现在我有:

SELECT * 
FROM Articles 
ORDER BY Published DESC, Date DESC, Time DESC

其他例子是:

SELECT * 
FROM Articles  
ORDER BY DateTimeLastEdited DESC, DateTimeCreated DESC

文章是TEXT,发布是BOOL(0或1),日期和时间都是TEXT(日期和时间条目)。

令我困惑的是,当我在SQLite客户端中直接测试查询时,它可以工作。但是,在PHP中使用它并不像在SQLite客户端中那样对它进行排序!

根据多个条件排序的正确语法是什么,是否有可靠的SQLite查询测试工具供PHP使用? (使用的PHP是5.5.3)

2 个答案:

答案 0 :(得分:1)

要在PHP中使用SQLite,您可以使用PDO对象。 Here是一个很好的教程。

排序多个条件:

您可以使用例如ORDER BY评级DESC,将ASC命名为按评级排序,然后,如果评级相等,则按名称排序。

答案 1 :(得分:1)

我犯了最愚蠢的错误。 : - (

最后,结果证明它不是SQL代码,但在PHP中缺少=。 SQL查询没问题,但我使用过的IF / ELSE缺少一个“=”。

我的代码包含=而不是==用于条件检查,因为我专注于SQL查询我完全错过了。这是完整的代码:

function display_all_Articles_in_a_HTML_table($sort = "ID")
{
if ($sort == "ID")
    {
    $sql = "SELECT * FROM Articles ORDER BY ID DESC";
    }
else if ($sort == "DateTime")
    {
    $sql = "SELECT * FROM Articles ORDER BY Date DESC, Time DESC";
    }
else if ($sort == "DateTimeCreated")
    {
    $sql = "SELECT * FROM Articles ORDER BY DateTimeCreated DESC";
    }
else if ($sort == "DateTimeLastEdited")
    {
    $sql = "SELECT * FROM Articles ORDER BY DateTimeLastEdited DESC, DateTimeCreated DESC";
    }
else if ($sort == "Published")
    {
    $sql = "SELECT * FROM Articles ORDER BY Published DESC, Date DESC, Time DESC";
    }
else
    {
    return FALSE;
    }
//
//DB fetch, returns $result
//
$result = retrieve_from_database($sql);
//
//Print sorted HTML table
//
print '<table border="1">';
foreach($result as $position_in_main_array => $inner_array_member)
    {
    echo "<tr>";
    echo "<td>";
    echo $inner_array_member["Date"];       
    echo "</td>";
    echo "<td>";
    echo $inner_array_member["Time"];       
    echo "</td>";
    echo "<td>";
    echo $inner_array_member["Published"];      
    echo "</td>";
    echo "<td>";
    echo $inner_array_member["Article"];        
    echo "</td>";
    echo "<td>";
    echo $inner_array_member["DateTimeCreated"];        
    echo "</td>";
    echo "<td>";
    echo $inner_array_member["DateTimeLastEdited"];     
    echo "</td>";                   
    }
echo "</table>\n";
}

**

还有另一种方法可以获得相同的SQLite结果:

SELECT * FROM(SELECT * FROM(SELECT * FROM Table ORDER BY Column DESC)ORDER By Column DESC),ORDER BY Column DESC

我玩了一下,尝试找到可行的查询,而我认为PHP内置的SQLite有点奇怪。

感谢所有回复的人。