Php 附加变量值中的空格

Php 附加变量值中的空格,php,variables,Php,Variables,我试图根据实际情况为我的“get_threads”变量提供一些额外的内容。但它没有按预期工作,查询根本没有执行。 “final”变量中似乎缺少一些空格。 但当我将它们添加到值中时,输出完全消失 输出查询是: SELECT id, main_forum_id, icon_id, title, description, author_id, closed, views, posts, date_created, last_post_author_id, last_replyTime FROM for

我试图根据实际情况为我的“get_threads”变量提供一些额外的内容。但它没有按预期工作,查询根本没有执行。 “final”变量中似乎缺少一些空格。 但当我将它们添加到值中时,输出完全消失

输出查询是:

SELECT id, main_forum_id, icon_id, title, description, author_id, closed, views, posts, date_created, last_post_author_id, last_replyTime FROM forum_thread WHERE main_forum_id= ('1') ORDER BY views ASC LIMIT 0, 20
这就是代码:

$get_threads  = "SELECT id, main_forum_id, icon_id, title, description, author_id, closed, views, posts, date_created, last_post_author_id, last_replyTime FROM forum_thread WHERE main_forum_id= ('" . $actualBoard . "')";
if (isset($_GET[ 'sortField' ])) {
switch ($_GET[ 'sortField' ]) {
    case topic:
        $get_threads  .= " ORDER BY title ASC ";
        break;

    case rating:
        $get_threads  .= " ORDER BY rating ASC ";
        break;

    case replies:
        $get_threads  .= " ORDER BY replies ASC ";
        break;

    case views:
        $get_threads  .= " ORDER BY views ASC ";
        break;

    case lastReply:
        $get_threads  .= " ORDER BY last_replyTime DESC ";
        break;      
        }
    } else {
$lastReplyClass = 'columnLastPost active';
$get_threads  .= " ORDER BY last_replyTime ASC ";
    }
$get_threads  .= " LIMIT $start, $perPage";
解决方案:

好吧,我真是个白痴。。 当时有一个格式化功能并删除了它。导致错误的原因:

Fatal error: Call to undefined function formatDateString() 
ASC限制

必须有一个空间

您应该在您的限制和订单之前添加一个空格

$get_threads  .= " ORDER BY last_replyTime ASC";
    }
$get_threads  .= " LIMIT $start, $perPage";

按上次回复时ASC给出
订单与
限制20之间的空格

另外,开关盒用单引号或双引号包围

比如说,

case "topic":
 break;
case "views":
 break;

尝试在所有“ORDER BY[…]ASC | DESC”插入引号后加上空格,将引号插入
大小写
参数中。示例:
case'topic':
(如果topic未定义为常量),您可以在
开关中插入
默认值
case
…我知道,但这就是问题所在。如果我添加一个空格,输出为:nothing。没有PHP错误,没有MySql错误。什么都没有。试着在数据库中使用查询,如果它能工作,试一下,这是调试SQL=)的第一步输出不能是什么都没有,只是因为你添加了一个空格。然后你在错误的地方添加了空格或者其他东西。空格不会杀死任何东西。你可以在顶部看到经过编辑的代码。我确信,我的代码是正确的。在我将查询拆分为这几个部分之前,它就像一个符咒。这就是该死的空格。你仍然缺少限制之前的空格,它仍然说是ASCLIMIT而不是ASC LIMIT。这就是问题的重点……当我正确添加空格时,输出完全是空的。@RedDragon55:在执行之前,只需
echo
你的查询,然后运行
DB
。看看有没有结果?同时用您的查询更新您的问题。@RedDragon55:运行查询时有结果吗?我只想问这个问题。例如
选择。。。其中主论坛id=('1')。。。限制20,20
不是你的功能部分。是的,我期望的结果。我已经发布了查询<代码>从论坛线程中选择id、主论坛id、图标id、标题、描述、作者id、关闭、视图、帖子、创建日期、最后发布作者id、最后回复时间,其中主论坛id=('1')按视图排序ASC限制0、20
@RedDragon55:您忘记了开关大小写字符串值周围的引号。我现在更新了我的答案。
case "topic":
 break;
case "views":
 break;
$get_threads  = "SELECT id, main_forum_id, icon_id, title, description, author_id, closed, views, posts, date_created, last_post_author_id, last_replyTime FROM forum_thread WHERE main_forum_id= ('" . $actualBoard . "') ";
    $sortField = (isset($_GET[ 'sortField' ])) ? $_GET[ 'sortField' ] : '';

    switch ($sortField) {
        case 'topic':
            $get_threads  .= " ORDER BY title ASC ";
            break;

        case 'rating':
            $get_threads  .= " ORDER BY rating ASC ";
            break;

        case 'replies':
            $get_threads  .= " ORDER BY replies ASC ";
            break;

        case 'views':
            $get_threads  .= " ORDER BY views ASC ";
            break;

        case 'lastReply':
            $get_threads  .= " ORDER BY last_replyTime DESC ";
            break;      
        default:{
            $lastReplyClass = 'columnLastPost active';
            $get_threads  .= " ORDER BY last_replyTime ASC ";
            }
            break;      
    }

    $get_threads  .= " LIMIT $start, $perPage";