有人能指出我如何编写多种类型的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)
答案 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有点奇怪。
感谢所有回复的人。