Php 为什么第一个查询总是被跳过而排序不起作用?

Php 为什么第一个查询总是被跳过而排序不起作用?,php,mysql,Php,Mysql,我使用下面的PHP从带有两个下拉列表和一个单选按钮的表单中获取数据。其思想是,下拉列表中的值确定查询order by字段ASC或DESC的order by。但是,即使单选按钮选择1,并且order by参数未使用PHP变量正确传递,代码中的第二个查询也是唯一执行的查询。我希望有人能帮我找出问题所在,我试过使用isset,也试过不使用isset,到目前为止都没有乐趣 database connect and select is done here... $sortIn = $_POST['Sor

我使用下面的PHP从带有两个下拉列表和一个单选按钮的表单中获取数据。其思想是,下拉列表中的值确定查询order by字段ASC或DESC的order by。但是,即使单选按钮选择1,并且order by参数未使用PHP变量正确传递,代码中的第二个查询也是唯一执行的查询。我希望有人能帮我找出问题所在,我试过使用isset,也试过不使用isset,到目前为止都没有乐趣

database connect and select is done here...

$sortIn = $_POST['SortOrder'];
$sortBy = $_POST['OrderBy'];
$include = $_POST['Include'];

if (isset($include) && $include = "0")
{
    $myquery = 'SELECT something FROM somewhere ORDER BY "$OrderBy" "$SortOrder"' ;
    $answer=mysql_query($myquery);
    if (!$answer) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $myquery;
        die($message);
        }

    echo "some HTML"

    while($result=mysql_fetch_array($answer))
    {
echo "some HTML";
}

elseif (isset($include) && $include = "1")
    {
     $myquerytwo = 'SELECT * FROM Results ORDER BY "$OrderBy" "$SortOrder"' ;
     $answertwo=mysql_query($myquerytwo);
     if (!$answertwo) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $myquerytwo;
    die($message);
        }
        echo "some HTML";

    while($resulttwo=mysql_fetch_array($answertwo))
    {
echo "Some HTML";
}

您的条件设置不正确:

你有:

$include = "0"
它只是将$include设置为0,并且始终返回true,因为赋值将成功

将其更改为:

$include == "0"
对其他条件也这样做

我还要花一点时间告诉您,mysql_*库已被弃用,不应再使用。我建议使用mysqli集。它最像mysql,并且很容易切换到:是文档

有一些排序顺序:

"SELECT something FROM somewhere ORDER BY '$OrderBy' $SortOrder"

请添加您的HTML表单Alsonic昵称;谢谢你的提示。我知道mysql已被弃用,但我正在学习一门基于mysql的入门课程……这项工作不会在线,只是为了一个简单的演示。再次感谢!你能看出为什么订单不起作用吗$myquerytwo='SELECT*FROM Results ORDER BY$OrderBy$SortOrder'Ahh在线教程之一,你在使用W3吗?现在,对于不起作用的订单,您没有正确使用变量替换。假设$OrderBy始终是有效的列名,$SortOrder始终是值ASC或DESC,只需切换用于分隔字符串的内容。在PHP中,默认情况下,使用来分隔字符串告诉解释器sup brah,变量在这里,变量将放在里面。单身的就不要了。这就是说,将整个查询字符串包装在里面,并将$OrderBy包装在里面,然后在$SortOrder周围什么都没有,这样就可以了