在一个更新查询中有两个if(isset($ _ POST)数组?

时间:2015-11-27 18:52:05

标签: php mysqli

我正在尝试从上一页的隐藏表单中提取一个id,并将其作为变量用作更新查询的一部分。

这一点的路径是......: 登录管理区域(使用其他表)... 搜索'商家'进入数据库...... 条目显示带有更新按钮,更新按钮有一个隐藏的ID ...值通过"提交" ...

发布到此页面
if(isset($_POST["submit"]) && isset($_POST["submituname"]))
    {
        $id = $_POST["id"];
        $name = $_POST["uname"];
    }

    $query = mysqli_query($db, "UPDATE businesses SET username='$name' WHERE id='$id'");

    if($query)
    {
        $msguname = "<p>Your username has now been updated.</p>";
    }

由于

2 个答案:

答案 0 :(得分:0)

您需要对两个变量都使用isset()来检查它们。

if(isset($_POST['submit']) && isset($_POST["submituname"]))

你的SQL查询是当前开放注入攻击,请确保你使用PDO或mysqli_real_escape_string()。

答案 1 :(得分:0)

几个错误..

  1. 是否所有功能都必须在您的IF中...(因此只有在发布请求等时才触发它们。
  2. 您必须将isset设置为您正在检查的邮件参数
  3. 如果未设置ID,您会怎么做?在这种情况下,我通过使用filter_input给出了一个简单的小技巧,它在未设置param上返回NULL(另一件事是逃避,但我会留下你的小任务来学习如何逃避变量..)
  4. 最后一件事是你的if($ query)..如果你有任何成功,这是错误的检查。
  5. 这是一份工作副本

    if(isset($_POST['submit']) && ($_POST["submituname"])) {
        $id = filter_input(INPUT_POST, 'id');
        $name = filter_input(INPUT_POST, 'name');
        $query = mysqli_query($db, "UPDATE businesses SET username='{$name}' WHERE id={$id}");
        if(mysqli_affected_rows($db) === 1){
            $msguname = "<p>Your username has now been updated.</p>";
        } 
    }