Php 否则就不行了
这没有道理。。我试图根据URL参数的值对帖子进行排序,但我的elseif语句不起作用 这是一个向查询中添加另一个WHERE子句的函数。没有MYSQL错误,只是语句有问题Php 否则就不行了,php,if-statement,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"; }
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;
}
查询最终看起来是这样的
$query = "SELECT * FROM posts WHERE something = $something AND $sort > 1";
if语句起作用时,将忽略elseif。如果if语句中的$sort=down
,我会得到带有up>1
的帖子,反之亦然
if ($sort = "up")
elseif ($sort = "down")
应该是
if ($sort == "up")
elseif ($sort == "down")
应该是
if ($sort == "up")
elseif ($sort == "down")
实际上,两个内部ifs都没有正常工作 您需要使用
=
而不是=
。一个等号意味着赋值,如果你赋值给一个真值,在if条件下它的计算结果总是真的。这就是为什么你的爱似乎永远不会发生
您可能还需要修复您的WHERE
子句,它们对我来说没有意义(您正在排序,但与up
列和down
列进行比较?)。也许这就是你设计桌子的方式
根据您的评论,尝试以下SQL
WHERE
子句,看看您是否获得了正确的帖子:
if ($sort == "up") {
$where .= " AND up > down";
}
elseif ($sort == "down") {
$where .= " AND down > up";
}
实际上,两个内部ifs都没有正常工作 您需要使用
=
而不是=
。一个等号意味着赋值,如果你赋值给一个真值,在if条件下它的计算结果总是真的。这就是为什么你的爱似乎永远不会发生
您可能还需要修复您的WHERE
子句,它们对我来说没有意义(您正在排序,但与up
列和down
列进行比较?)。也许这就是你设计桌子的方式
根据您的评论,尝试以下SQL
WHERE
子句,看看您是否获得了正确的帖子:
if ($sort == "up") {
$where .= " AND up > down";
}
elseif ($sort == "down") {
$where .= " AND down > up";
}
两个问题:
if ($sort = "up") {
=
是赋值运算符。如果要测试相等性,需要在此处使用==
此外,两个条件的主体:
if ($sort = "up") {
$where .= " AND $sort > 1";
}
elseif ($sort = "down") {
$where .= " AND $sort > 1";
}
都是一样的。我不认为您的意思是在查询中附加相同的基本字符串,是吗?(当然,$sort
在这两种情况下都会有所不同,但如果这正是您的意思,为什么不直接将字符串硬编码。这读起来非常混乱,很难准确说出您的意图。)两个问题:
if ($sort = "up") {
=
是赋值运算符。如果要测试相等性,需要在此处使用==
此外,两个条件的主体:
if ($sort = "up") {
$where .= " AND $sort > 1";
}
elseif ($sort = "down") {
$where .= " AND $sort > 1";
}
都是一样的。我不认为您的意思是在查询中附加相同的基本字符串,是吗?(当然,
$sort
在这两种情况下都会有所不同,但如果这是您的意思,为什么不直接硬编码字符串呢。这读起来非常混乱,很难准确地说出您的意图。)Single=means variable 1=variable 2
Double==表示比较
此外,如果要使用此代码,请确保在$\u GET语句或任何有用户输入的语句周围放置mysql\u real\u escape\u string(),否则人们将能够使用sql注入
例如,mysql_real_escape_string($\u GET['sort']),如果您多次使用它,请确保使用变量
这是正确的代码;)
单一=表示变量1=变量2 Double==表示比较 此外,如果要使用此代码,请确保在$\u GET语句或任何有用户输入的语句周围放置mysql\u real\u escape\u string(),否则人们将能够使用sql注入 例如,mysql_real_escape_string($\u GET['sort']),如果您多次使用它,请确保使用变量 这是正确的代码;)
谢谢总是最基本的事情困扰着我lol。是的,上下都是我表格中的列。我用我看到的上下votesAh对帖子进行排序。你是在尝试只过滤投票率较高的帖子还是投票率较低的帖子,还是按分数排序?按分数排序。实际上,我正在尝试执行
up>down
,反之亦然(如果可能的话,不确定)。我刚才在例子中用了“1”。@Noob:你的分数是按上下计算的吗?这就是SO系统的工作原理。@Noob:我在答案中添加了修改后的SQL。看看是否对你有用。谢谢!总是最基本的事情困扰着我lol。是的,上下都是我表格中的列。我用我看到的上下votesAh对帖子进行排序。你是在尝试只过滤投票率较高的帖子还是投票率较低的帖子,还是按分数排序?按分数排序。实际上,我正在尝试执行up>down
,反之亦然(如果可能的话,不确定)。我刚才在例子中用了“1”。@Noob:你的分数是按上下计算的吗?这就是SO系统的工作原理。@Noob:我在答案中添加了修改后的SQL。看看它是否对你有效。答案请点击Thx!:)实际上,我并没有将$sort与相同的值进行比较。答案是Thx!:)实际上,我并不是在比较$sort和同一个值。我的意思是,做一个if(isset($\u GET['sort'])
,然后如果它被设置,mysql\u real\u escape\u string($\u GET['sort'])
。我的意思是,做一个如果(isset($\u GET['sort'])
,那么如果它被设置,mysql\u real\u escape\u string($\u GET['sort'])
)。