我已经创建了一些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
?>
答案 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
。