PHP if / else语句似乎不起作用

时间:2011-12-20 11:06:27

标签: php mysql if-statement

我已经创建了一些if / else语句来从url获取名称http://website.com/page.php?name=Love它看起来很好并且没有错误,但由于某种原因我没有从数据库中获取数据。基本上它从url获取'name'并且检查它是允许的类别之一,如果是,它从具有st_category =的数据库中选择文章到用户选择的内容。 但由于某些原因,它不起作用。

以下是我认为导致问题的代码片段。

       <?php
        $category = preg_replace('#[^a-z]#i', '', $_GET["name"]);

        if ($category = "Love") {
        $st_category = "Love";
        }
        else if ($category = "Work") {
        $st_category = "Work";
        }
        else if ($category = "Money") {
        $st_category = "Money";
        }
        else if ($category = "Kids") {
        $st_category = "Kids";
        }
        else if ($category = "Health") {
        $st_category = "Health";
        }
        else if ($category = "Friends") {
        $st_category = "Friends";
        }
        else if ($category = "Education") {
        $st_category = "Education";
        }
        else if ($category = "Other") {
        $st_category = "Other";
        }
        else {
        header("Location: http://www.inelmo.com/");
        exit;
        }

$sql = mysql_query("SELECT * FROM stories WHERE showing = 1 AND st_category = '$st_category' ORDER BY st_date DESC LIMIT 10") or die (mysql_error("There was an error in connection"));
        //And another stuff here to display article
?>

5 个答案:

答案 0 :(得分:9)

===不同。在你的if语句中,你正在做作业而不是比较 if ($category = "Love")应更改为if ($category == "Love")(或if ($category === "Love"),依此类推......

答案 1 :(得分:7)

使用in_array()可以整理更少的代码,更易于维护。

$categories = array(
  'Love',
  'Work',
  'Money',
  'Kids',
  'Health',
  'Friends',
  'Education',
  'Other'
);

$category = preg_replace('#[^a-z]#i', '', $_GET["name"]);

if (!in_array($category, $categories)) {
  header("Location: http://www.inelmo.com/");
  exit;
}

$sql = mysql_query("SELECT * FROM stories WHERE showing = 1 AND st_category = '$category' ORDER BY st_date DESC LIMIT 10") or die (mysql_error("There was an error in connection"));

这也解决了@matino正确指出的问题,即你分配而不是比较。

答案 2 :(得分:4)

你在每个if中都使用了一个“=”。 正确的语法是“==”或“===”,如:

<?php
    $category = preg_replace('#[^a-z]#i', '', $_GET["name"]);

    if ($category == "Love") {
        $st_category = "Love";
    }
    else if ($category == "Work") {
        $st_category = "Work";
    }
    ...
?>

答案 3 :(得分:0)

请使用双等号

if($foo=="foo1")

答案 4 :(得分:0)

在if语句中,您必须使用=,而必须使用==符号。使用=,您可以为左侧的变量指定值,例如$sum = 1 + 2;,您想要的是$sum==3