Php 为什么第一个查询总是被跳过而排序不起作用?
我使用下面的PHP从带有两个下拉列表和一个单选按钮的表单中获取数据。其思想是,下拉列表中的值确定查询order by字段ASC或DESC的order by。但是,即使单选按钮选择1,并且order by参数未使用PHP变量正确传递,代码中的第二个查询也是唯一执行的查询。我希望有人能帮我找出问题所在,我试过使用isset,也试过不使用isset,到目前为止都没有乐趣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
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周围什么都没有,这样就可以了