1

我有这个 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

4 回答 4

2

=赋值==平等===严格平等。您想要后者中的一个,因为第一个通常会产生值。

if ($sql == "ScriptOne") {
    header('Location: scriptone.php');
}
于 2013-04-10T21:46:10.920 回答
1
if($sql == "ScriptOne") {
         ^

不是

if($sql = "ScriptOne") {

=是赋值,==是比较

于 2013-04-10T21:45:55.143 回答
1

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

if($sql == "ScriptOne") {
于 2013-04-10T21:45:57.543 回答
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_*语句,因为它们已折旧

于 2013-04-10T21:50:40.953 回答