如果语句忽略elseif

时间:2013-04-10 21:44:21

标签: php

我有这个if语句。它是单击按钮以确定转发到的页面时运行的php脚本的一部分。 我有一个表,当管理员更改页面时更新,这一切都正常。 出于某种原因,这总是转发到scriptone。即使例如scriptthree被明确选择。 有什么建议吗?

$sql = "SELECT scriptName FROM selectedscript WHERE scriptSelected = '1'";

if($sql = "ScriptOne") {
    header('Location: scriptone.php');
}
elseif ($sql = "ScriptTwo") {
    header('Location: scripttwo.php');
}
elseif ($sql = "ScriptThree") {
    header('Location: scriptthree.php');
}
else {
    echo "Error";
}

谢谢

我尝试过双重和三重等号,但会导致显示错误信息:(

4 个答案:

答案 0 :(得分:2)

=assignment==equality===strict equality。您想要后者中的一个,因为第一个通常会产生 true 值。

if ($sql == "ScriptOne") {
    header('Location: scriptone.php');
}

答案 1 :(得分:1)

if($sql == "ScriptOne") {
         ^

if($sql = "ScriptOne") {

=是作业,==是比较

答案 2 :(得分:1)

您需要使用双重或三重等号

if($sql == "ScriptOne") {

答案 3 :(得分:1)

在if语句中使用它们之前,您需要执行sql查询并获取一些值。

这样的事情:

$sql = "SELECT scriptName FROM selectedscript WHERE scriptSelected = '1'";
$q=mysql_query($sql) or die(mysql_error());
$row=mysql_fetch_assoc($q);

switch ($row['scriptName']) {
  case 'ScriptOne':
    header('Location: scriptone.php');
    break;
  case 'ScriptTwo':
    header('Location: scripttwo.php');
    break;
  case 'ScriptThree':
    header('Location: scriptthree.php');
    break;
  default:
    echo "Error";
}

另外,请考虑使用PDO而不是mysql_*语句,因为它们是depreciated