这没有意义..我正在尝试根据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语句中,我得到的帖子无论是否相反,反之亦然.
实际上,两个内部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)