检查URL中的参数是否为特定ID

时间:2018-04-05 14:07:33

标签: php sql

我想创建用于编辑表格的函数。

但我有更多的表单转到相同的PHP页面,所以当发送提交时,我在URL中发送一个参数,如php/edit.php?id=website,在PHP代码中,我想检查URL中的ID,以便功能执行。

这是PHP代码,我尝试确认ID然后执行函数

<?php 
    if(isset($_POST["submit"]) && isset($_GET['id']) == "website" {
    include('config.php');
    $sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."' WHERE websiteId=".$_POST["websiteid"]."";

    if($db->query($sql2) === TRUE) {
        header('Location: /bvdo/pages.php');
        } else {
        echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" . $db->error."');</script>";
        }
    }
?>

很好地注意到该函数正在运行,因为如果删除&& isset($_GET['id']) == "website"数据库正在使用新值进行更新。

3 个答案:

答案 0 :(得分:1)

您无法将isset和比较结合起来。此外,您在if语句中缺少结束括号。您可能想要的是:

if(isset($_POST["submit"]) && isset($_GET['id']) && $_GET['id'] == "website") {
    // Do something
}

<强>解释

使用isset($var)检查变量$var是否已在任何位置初始化(如果已设置)。如果设置了变量,则isset返回true,否则返回false。所以你有效地比较的是true == "website",显然情况并非如此。

使用$var2 == "a string"检查您的$var是否等于字符串。

你不能混淆它们,但要逐一检查。

答案 1 :(得分:0)

不是为代码添加复杂功能,为什么不分割将id保存到隐藏的输入中,并将其与$ _POST [&#39; id&#39;]一起使用。

if(isset($_POST["submit"]) && isset($_POST['id']) == "website" {
include('config.php');
$sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."' WHERE websiteId=".$_POST["websiteid"]."";

if($db->query($sql2) === TRUE) {
    header('Location: /bvdo/pages.php');
    } else {
    echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" . $db->error."');</script>";
    }
}

现在无需担心URL参数。

答案 2 :(得分:0)

清理代码的另一种方法是使用检查值是否已设置的函数。你可以通过检查 If function == your value 来单独完成。

function getValue($id) {
  if (!isset($_GET[$id])) {
    return false;
  }
    return $_GET[$id];
  }

  if (getValue('id') == 'website') {
    include('config.php');
    $sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."' 
    WHERE websiteId=".$_POST["websiteid"]."";

    if($db->query($sql2) === TRUE) {
      header('Location: /bvdo/pages.php');
    } else {
      echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" 
      . $db->error."');</script>";
    }
  }
}

如果您正在寻找一个单行检查变量的值,您还不确定是否已设置,这可行:

if ((isset($variable) ? $variable : null) === $value) { }

唯一可能的缺点是,如果您正在测试true / false - null将被解释为等于false