elseif不工作

Noo*_*oob 0 php if-statement

这没有意义..我正在尝试根据URL参数的值对帖子进行排序,但我的elseif语句不起作用.

这是一个向查询添加另一个WHERE子句的函数.没有MYSQL错误我只是声明有问题.

function sort_where($where)
{
  if (isset($_GET['sort'])) { 
      $sort = $_GET['sort'];

      if ($sort = "up") {
         $where .= " AND $sort > 1";
      } 
      elseif ($sort = "down") {
         $where .= " AND $sort > 1";
      }

   }

  return $where;
}
Run Code Online (Sandbox Code Playgroud)

查询最终看起来像这样

$query = "SELECT * FROM posts WHERE something = $something AND $sort > 1";
Run Code Online (Sandbox Code Playgroud)

if语句有效,elseif被忽略.up > 1如果$sort = down在if语句中,我得到的帖子无论是否相反,反之亦然.

Bol*_*ock 5

实际上,两个内部ifs都没有正常工作.

您需要使用===.一个等号表示赋值,如果赋值为truthy值,则它总是在if条件下求值为true.这就是为什么你的elseif似乎永远不会发生的原因.

您可能还需要修复您的WHERE子句,它们对我没有意义(您正在排序但是与up列和down列进行比较?).或许这就是你设计你的桌子的方式......


根据您的意见,尝试以下SQL WHERE子句,看看是否得到了正确的帖子:

if ($sort == "up") {
   $where .= " AND up > down";
} 
elseif ($sort == "down") {
   $where .= " AND down > up";
}
Run Code Online (Sandbox Code Playgroud)