PHP 搜索查询结果 ORDER BY 无效
PHP Search query result ORDER BY not working
我有这段代码可以搜索数据库。它现在可以完美运行,但我想更改它显示的顺序。下面是我的代码。
if (isset($_GET["mainSearch"]))
{
$condition = '';
$query = explode(" ", $_GET["mainSearch"]);
foreach ($query as $text)
{
$condition .= "question LIKE '%".SQLite3::escapeString($text)."%' OR ";
}
$condition = substr($condition, 0, -4);
$order = "ORDER BY quiz_id DESC";
$sql_query = "SELECT * FROM questions WHERE " . $condition;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition . $order;
$result = $db->query($sql_query);
$resultCount = $db->querySingle($sql_query_count);
if ($resultCount > 0)
{
if ($result)
{
while ($row = $result->fetchArray(SQLITE3_ASSOC))
{
echo '<div class="quesbox_3">
<div class="questitle">
<h2>'.$row["question"].'</h2>
</div>
<div class="quesanswer">'.$row["answer"].'</div>
</div>';
}
}
}
else
{
echo "No results found";
}
}
我希望结果显示的顺序是从下到上。由于当前代码无法正常工作,请问我该如何正确添加它。
在此字符串中输入 1 space
$order = " ORDER BY quiz_id DESC ";
它没有向您显示,因为如果您回显您的查询,它就会像这样显示
SELECT COUNT(*) as count FROM questions WHERE question LIKE '%test%'ORDER BY quiz_id DESC
你可以看到在这个回显查询中 ORDER and %test%
之间没有 space
像这样对你有帮助。
Query Space issues. can you try with this query
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition .' '. $order;
您在 count() 查询上进行排序,实际上并没有多大作用。
$sql_query = "SELECT * FROM questions WHERE " . $condition;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition . $order;
尝试
$sql_query = "SELECT * FROM questions WHERE " . $condition. ' '. $order;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition ;
您的 $order
仅在您的计数查询中。添加到您的 $sql_query
$sql_query = "SELECT * FROM questions WHERE " . $condition . ' '. $order;
我有这段代码可以搜索数据库。它现在可以完美运行,但我想更改它显示的顺序。下面是我的代码。
if (isset($_GET["mainSearch"]))
{
$condition = '';
$query = explode(" ", $_GET["mainSearch"]);
foreach ($query as $text)
{
$condition .= "question LIKE '%".SQLite3::escapeString($text)."%' OR ";
}
$condition = substr($condition, 0, -4);
$order = "ORDER BY quiz_id DESC";
$sql_query = "SELECT * FROM questions WHERE " . $condition;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition . $order;
$result = $db->query($sql_query);
$resultCount = $db->querySingle($sql_query_count);
if ($resultCount > 0)
{
if ($result)
{
while ($row = $result->fetchArray(SQLITE3_ASSOC))
{
echo '<div class="quesbox_3">
<div class="questitle">
<h2>'.$row["question"].'</h2>
</div>
<div class="quesanswer">'.$row["answer"].'</div>
</div>';
}
}
}
else
{
echo "No results found";
}
}
我希望结果显示的顺序是从下到上。由于当前代码无法正常工作,请问我该如何正确添加它。
在此字符串中输入 1 space
$order = " ORDER BY quiz_id DESC ";
它没有向您显示,因为如果您回显您的查询,它就会像这样显示
SELECT COUNT(*) as count FROM questions WHERE question LIKE '%test%'ORDER BY quiz_id DESC
你可以看到在这个回显查询中 ORDER and %test%
像这样对你有帮助。
Query Space issues. can you try with this query
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition .' '. $order;
您在 count() 查询上进行排序,实际上并没有多大作用。
$sql_query = "SELECT * FROM questions WHERE " . $condition;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition . $order;
尝试
$sql_query = "SELECT * FROM questions WHERE " . $condition. ' '. $order;
$sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition ;
您的 $order
仅在您的计数查询中。添加到您的 $sql_query
$sql_query = "SELECT * FROM questions WHERE " . $condition . ' '. $order;